Copyright(C) 1994 Terumasa KODAKA , Takeshi KONO ■CRT BIOS 用語 KCGアクセスモード KCGアクセスモードには、コードアクセスモードとドットアクセスモードの 2種類がある。 o コードアクセスモード コードアクセスモードでは、テキストVRAMで2バイト文字(漢字等)を 表示することができる。 ただし、KCGからのフォント読み出しや外字登録が行えるのは、CRTの VSYNC(垂直同期)期間中に限られる。VSYNCのデューティ比(垂直同期 期間の割合)は以下の表のように小さいので、このモードで大量の フォントの読み出しや設定をすると時間がかかる。 垂直同期期間中かどうかは、GDCのステータスレジスタ bit 5(I/O 0060h)で 知ることができる。 ---------+--------+--------+--------------- CRT解像度|水平走査|垂直同期|VSYNCデューティ | 周波数| 周波数| ---------+--------+--------+--------------- 640x200 |15.98kHz|61.47Hz |3.1% 640x400 |24.83kHz|56.42Hz |1.8% 640x400 |31.47kHz|70.10Hz |0.45% 640x480 |31.47kHz|59.94Hz |0.38% 1120x750 |32.86kHz|79.09Hz |1.2% 1120x750 |50.02kHz|60.05Hz |1.2% ---------+--------+--------+--------------- 関連 INT 0Ah(外部割り込み…VSYNC) o ドットアクセスモード ドットアクセスモードでは、テキストVRAMで2バイト文字(漢字等)を 表示することができない。テキスト表示をONにしてテキストVRAMに 2バイト文字を書き込むと、でたらめな(実際には文字コードに対応 している)1バイト文字が表示される。 そのかわり、KCGへのアクセスは常に行えるので、コードアクセスモード より高速にフォントの読み出しや外字の設定を行うことができる。 関連: INT 18h - Function 14h INT 18h - Function 1Ah INT 18h - Function 1Fh INT 18h - Function 20h I/O 0060h I/O 0068h - 0Ah,0Bh 用語 アトリビュートモード テキストVRAMのアトリビュートbit 4の動作を設定する。「バーティカル ラインモード」と「簡易グラフィックモード」がある。 o バーティカルラインモード アトリビュートのbit 4=1のとき、文字上に縦線が表示される。 o 簡易グラフィックモード アトリビュートのbit 4=1のとき、テキスト部データは 簡易グラフィック表示の画素データとして解釈され、表示される。 PC-8001のグラフィックスの互換のために用意されている。 用語 専用高解像度ディスプレイと標準ディスプレイ o 専用高解像度ディスプレイ 640x400ドットの表示が可能な、ノーマルモードで最も一般的な ディスプレイを指す。映像信号は、水平走査周波数24.83kHz、 垂直同期周波数56.42Hz、ノンインターレースである。 このディスプレイを接続するときは、DIP SW 1-1をONにする。 o 標準ディスプレイ 640x200ドットの表示が可能な、PC-8001用ディスプレイを指す。映像 信号は、水平走査周波数15.98kHz、垂直同期周波数61.47Hz、 ノンインターレースである。 このディスプレイを接続するときは、DIP SW 1-1をOFFにする。 用語 拡張アトリビュート o PC-H98には、7種類のアトリビュートモードがある(図1)。 標準アトリビュートモード・拡張アトリビュートのEGHモード・JEHモードは、 テキスト画面全体のアトリビュートのモードを決定する。INT 18h - Function 2Ahで設定できる。 標準アトリビュートモードは、PC-9801と完全互換のモードである (表1)。アトリビュート領域は、偶数番地のみ有効となる。 拡張アトリビュートモード時は、アトリビュート領域の奇数番地も有効に なる。奇数番地の各ビットの意味は、EGHモードでは表2のように、JEHモード では表3のようになる。 o アトリビュート領域の奇数番地のbit 1,0の値によって、さらにキャラクタ 単位でEGLモード、EGHモード、PCモードが選択できる。モードによって、 偶数番地の各ビットの意味が変化する(表4,5,6)。 o 偶数番地と奇数番地に同じ設定内容があるモードでは、偶数番地の設定が 有効になる。たとえば、EGH+EGLモードでは、背景色を偶数番地と奇数番地の 両方で指定できるが、このとき奇数番地の背景色の設定は無視される。 図1 [アトリビュートモード] ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ +----標準アトリビュートモード : | : : ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ | : : : : +----拡張アトリビュート−EGHモード---+--EGLモード : | : : +--JELモード : | : : +--PCモード : | : : : : +----拡張アトリビュート−JEHモード---+--EGLモード : : : +--JELモード : : : +--PCモード : : : : : ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ INT 18h - Function 2Ahで選択 アトリビュート領域の (画面全体に作用) 奇数番地bit 1,0で選択 (キャラクタ毎に選択可能) アトリビュート領域奇数番地の アトリビュート領域偶数番地の 動作を決定する 動作を決定する 表1 [標準アトリビュートモード時] ・奇数番地 なし ・偶数番地 bit 7: G - 緑 (文字色) bit 6: R - 赤 (文字色) bit 5: B - 青 (文字色) bit 4: VL - バーティカルライン(1=表示、0=無表示) bit 3: UL - アンダーライン (1=表示、0=無表示) bit 2: RV - リバース (1=反転、0=非反転) bit 1: BL - ブリンク (1=点滅、0=非点滅) bit 0: ST - シークレット (1=文字表示、0=無表示) [G-R-Bと対応する表示色] +---------+-----------+ | G R B | 表示色 | +---------+-----------+ | 0 0 0 | 黒 | | 0 0 1 | 青 | | 0 1 0 | 赤 | | 0 1 1 | マゼンタ | | 1 0 0 | 緑 | | 1 0 1 | シアン | | 1 1 0 | 黄 | | 1 1 1 | 白 | +---------+-----------+ * 奇数番地は使用しない 表2 [拡張アトリビュート−EGHモード時] ・奇数番地 bit 7: Ib - 輝度(背景色) bit 6: Rb - 赤 (背景色) bit 5: Gb - 緑 (背景色) bit 4: Bb - 青 (背景色) bit 3: OL - オーバーライン(1=表示、0=無表示) bit 2: If - 輝度(文字色) bit 1,0: 偶数番地のモード指定 10b=EGLモード 01b=JELモード 00b=PCモード 表3 [拡張アトリビュート−JEHモード時] ・奇数番地 bit 7: 0 bit 6: DW - 横倍角(1=横倍角,0=全角) bit 5: DH - 縦倍角(1=縦倍角,0=全角) bit 4: UL - 縦倍角エリア(1=上,0=下) bit 3: LR - 横倍角エリア(1=右,0=左) bit 2: If - 輝度(文字色) bit 1,0: 偶数番地のモード指定 10b=EGLモード 01b=JELモード 00b=PCモード 表4 [拡張アトリビュート−EGLモード時] ・偶数番地 bit 7: Ib - 輝度(背景色) bit 6: Rb - 赤 (背景色) bit 5: Gb - 緑 (背景色) bit 4: Bb - 青 (背景色) bit 3: If - 輝度(文字色) bit 2: Rf - 赤 (文字色) bit 1: Gf - 緑 (文字色) bit 0: Bf - 青 (文字色) 表5 [拡張アトリビュート−JELモード時] ・偶数番地 bit 7: BL - ブリンク (1=点滅、0=非点滅) bit 6: RV - リバース (1=反転、0=非反転) bit 5: VL - バーティカルライン(1=表示、0=無表示) bit 4: UL - アンダーライン (1=表示、0=無表示) bit 3: If - 輝度(文字色) bit 2: Rf - 赤 (文字色) bit 1: Gf - 緑 (文字色) bit 0: Bf - 青 (文字色) 表6 [拡張アトリビュート−PCモード時] ・偶数番地 bit 7: G - 緑 (文字色) bit 6: R - 赤 (文字色) bit 5: B - 青 (文字色) bit 4: VL - バーティカルライン(1=表示、0=無表示) bit 3: UL - アンダーライン (1=表示、0=無表示) bit 2: RV - リバース (1=反転、0=非反転) bit 1: BL - ブリンク (1=点滅、0=非点滅) bit 0: ST - シークレット (1=文字表示、0=無表示) 表7 [I-R-G-Bと対応する表示色] +------------+-------------------------+ | I R G B | 表示色 | +------------+-------------------------+ | 0 0 0 0 | 黒 | | 0 0 0 1 | 暗い青 | | 0 0 1 0 | 暗い緑 | | 0 0 1 1 | 暗いシアン | | 0 1 0 0 | 暗い赤 | | 0 1 0 1 | 暗いマゼンタ | | 0 1 1 0 | 暗い茶(暗い黄色ではない)| | 0 1 1 1 | グレー | +------------+-------------------------+ | 1 0 0 0 | 暗いグレー(黒ではない) | | 1 0 0 1 | 青 | | 1 0 1 0 | 緑 | | 1 0 1 1 | シアン | | 1 1 0 0 | 赤 | | 1 1 0 1 | マゼンタ | | 1 1 1 0 | 黄 | | 1 1 1 1 | 白 | +------------+-------------------------+ INT 18h - Function 0Ah(ノーマル) 分類 CRT BIOS 名前 CRTモードの設定 対象 ノーマル 入力 AH=0Ah AL=モード設定情報 bit 7〜5: 000bを設定する bit 4: 行数[PC-98GS,PC-9821(Bf・Bp・Bs・Be・Tsを除く)](Undocumented) 1= 30行 0= 20/25行(起動時設定) * このビットは640x480モード時のみ有効。他モード時は無視される。 bit 3: KCG(漢字キャラクタジェネレータ)アクセスモード[PC-9801初代を除く] 1= ドットアクセス 0= コードアクセス(起動時設定) * PC-9801初代は常にコードアクセスモードと同じ状態 bit 2: アトリビュートモード 1= 簡易グラフィックス(起動時設定) 0= バーティカルライン bit 1: 桁数 1= 40桁(DIP SW 2-3 OFF時の起動時設定) 0= 80桁(DIP SW 2-3 ON 時の起動時設定) * 機種によっては、DIP SW 2-3はON固定 bit 0: 行数 1= 20/30行 0= 25行 -----+-----+----+------------------------------------ bit 4|bit 0|行数|備考 -----+-----+----+------------------------------------ 0 |1 |20行|DIP SW 2-4 OFF時の起動時設定 0 |0 |25行|DIP SW 2-4 ON 時の起動時設定 1 |1 |30行|640x480表示時のみ設定可能 1 |0 |--- |設定禁止 -----+-----+----+------------------------------------ 出力 なし 解説 o テキスト画面表示のモード設定を行う。 テキストGDCやラインカウンタ制御回路に対してコマンドを送る。 u このファンクションを実行すると、他にもVSYNC割り込みを継続利用している ルーチンがある場合、そのルーチンのVSYNC割り込みが停止してしまう。処理の なかでINT 18h - Function 10hを呼び出すためである。 u PC-98GSとPC-9821(Bf・Bp・Bs・Be・Tsを除く)の640x480モード時には30行の設定が 可能である。ただし、MS-DOSのCONデバイスドライバは30行モードを サポートしていない。 u 640x480モード時に、bit 4=1,bit 0=0でこのファンクションを実行すると エラーとなり、なにも処理を行わずに戻る(他のビットの設定も行われ ない。表示もOFFにならない)。エラーの通知はない。 CRT解像度640x400モード時は、AL bit 4の状態が無視される。 u 640x480モード時に限り、このファンクションを実行するとテキスト表示が OFFになる。ONにするには、INT 18h - Function 0Chを実行する。 CRT解像度640x400モード時、テキスト表示のON/OFF状態は変化しない。 o 40桁モードに設定すると、文字の幅が2倍になる。テキストVRAMは、80桁時の 偶数桁(左端を0桁目とする)のアドレスのみ使用する。 640x480モード時も、このファンクションで40桁表示に設定することができる。 ただし、MS-DOSのCONデバイスドライバは40桁モードをサポートしていない。 o AL bit 7〜5は、INT 18h - Function 0Bh(ノーマル)の出力のAL bit 7〜5に 対応しているため、設定不可能。 o BIOSが設定するアトリビュートモードの初期値は、簡易グラフィック モードである。ただし、MS-DOS起動後はバーティカルラインモードに 設定されている。 関連 INT 18h - Function 0Bh(ノーマル) INT 18h - Function 30h 0000:053Ch INT 18h - Function 0Ah(ハイレゾ) 分類 CRT BIOS 名前 CRTモードの設定 対象 ハイレゾ 入力 AH=0Ah AL=モード設定情報 bit 7〜5: 000bを設定する(未使用) bit 4: 行数 1= 31行 0= 25行(起動時設定) bit 3: KCGアクセスモード 1= ドットアクセス 0= コードアクセス(起動時設定) bit 2〜0: 000bを設定する(未使用) 出力 なし 解説 o テキスト画面表示のモード設定を行う。 テキストGDCやラインカウンタ制御回路に対してコマンドを送る。 o ハイレゾモードでは、アトリビュートモードや表示桁数は変更でき ない。アトリビュートは常にバーティカルラインモードと同じ状態に なっている。 u このファンクションは、次のVSYNC発生を待って実際の処理を実行 する。VSYNC発生のタイミングを知るために、VSYNC割り込み(INT 0Ah)を 利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 関連 INT 18h - Function 0Bh(ハイレゾ) INT 18h - Function 1Ch 0000:0546h INT 18h - Function 0Ah(LT・HA) 分類 CRT BIOS 名前 CRTモードの設定 対象 PC-98LT・HA 入力 AH=0Ah AL=モード設定情報 bit 7: 文字タイプ (Undocumented) このファンクションで直接変更することはできない。 このビットの値は常に無視される。 bit 6〜1: 000000bを設定する(未使用) bit 0: 行数 1= 20行 0= 25行(起動時設定) 出力 なし 解説 o テキスト画面表示モード(表示行数)の設定を行う。 o PC-98LT・HAでは、アトリビュートモードや表示桁数は変更でき ない。アトリビュートは常にバーティカルラインモードと同じ状態に なっている。 o CRTインターフェースを持たないため、KCG(漢字キャラクタジェネレータ) アクセスモードの設定はない。常にドットアクセスモードと同じ状態に なっている。 u このファンクションの設定値は0000:053Chに格納される。0000:053Chの bit 7は表示文字フォントを示すが、このファンクションでは変更できない。 0000:053Chを直接操作してbit 7=1に設定したあと、このファンクションを 実行すると変更できる。 関連 INT 18h - Function 0Bh(LT・HA) 0000:053Ch INT 18h - Function 0Bh(ノーマル) 分類 CRT BIOS 名前 CRTモードのセンス 対象 ノーマル 入力 AH=0Bh 出力 AL=モード情報 bit 7: CRTの種類 1= 専用高解像度ディスプレイ(DIP SW 1-1 ON 時) 0= 標準ディスプレイ (DIP SW 1-1 OFF時) bit 6: VSYNC検出待ち(CRT BIOS作業用) 関連:0000:053Ch bit 5: 未使用 bit 4: 行数[PC-98GS,PC-9821(Bf・Bp・Bs・Be・Tsを除く)](Undocumented) 1= 30行 0= 20/25行(起動時設定) bit 3: KCG(漢字キャラクタジェネレータ)アクセスモード 1= ドットアクセス 0= コードアクセス(起動時設定) * PC-9801初代では無効(常にコードアクセス状態) bit 2: アトリビュートモード 1= 簡易グラフィックス(起動時設定) 0= バーティカルライン bit 1: 桁数 1= 40桁(DIP SW 2-3 OFF時の起動時設定) 0= 80桁(DIP SW 2-3 ON 時の起動時設定) bit 0: 行数 1= 20/30行 0= 25行 -----+-----+----+------------------------------------ bit 4|bit 0|行数|備考 -----+-----+----+------------------------------------ 0 |1 |20行|DIP SW 2-4 OFF時の起動時設定 0 |0 |25行|DIP SW 2-4 ON 時の起動時設定 1 |0 |--- |未使用 1 |1 |30行|640x480表示時のみ設定可能 -----+-----+----+------------------------------------ 解説 o 現在のCRTモードの状態を取得する。 0000:053Chの値を返すだけである。 o bit 6はCRT BIOSの作業用ビットで、通常0である。詳細は、システム共通域 0000:053Chの項を参照。 o bit 4、bit 0は、INT 18h - Function 30hで変更した場合にも反映する。 関連 INT 18h - Function 0Ah(ノーマル) INT 18h - Function 30h INT 18h - Function 31h 0000:053Ch INT 18h - Function 0Bh(ハイレゾ) 分類 CRT BIOS 名前 CRTモードのセンス 対象 ハイレゾ 入力 AH=0Bh 出力 AL=モード情報 bit 7: 常時1(高解像度ディスプレイを示している) bit 6,5: 常時00b(未使用) bit 4: 行数 1= 31行 0= 25行(起動時設定) bit 3: KCG(漢字キャラクタジェネレータ)アクセスモード 1= ドットアクセス 0= コードアクセス(起動時設定) bit 2: 常時0(バーティカルラインモードを示している) bit 1: 常時0(80桁を示している) bit 0: 常時0(未使用) 解説 o 現在のCRTモードの状態を取得する。 u 0000:0546hから読み出した値に対し、bit 4,3以外のビットを0にし、 bit 7を1にした値を返す。 関連 INT 18h - Function 0Ah(ハイレゾ) 0000:0546h INT 18h - Function 0Bh(LT・HA) 分類 CRT BIOS 名前 CRTモードのセンス 対象 PC-98LT・HA 入力 AH=0Bh 出力 AL=モード情報 bit 7: 文字タイプ (Undocumented) 1= 専用高解像度ディスプレイ用フォント(起動時設定) 0= 標準ディスプレイ用フォント bit 6〜1: 000000b bit 0: ラインモード 1= 20行 0= 25行(起動時設定) 解説 o 現在のCRTモードの状態を取得する。 u 0000:053Chの値を返すだけである。 u bit 7は表示文字フォントを示すが、INT 18h - Function 0Ah(LT・HA)では 変更できない。0000:053Chを直接操作してbit 7=1に設定したあと、 INT 18h - Function 0Ah(LT・HA)を実行すると変更できる。 関連 INT 18h - Function 0Ah(LT・HA) 0000:053Ch INT 18h - Function 0Ch 分類 CRT BIOS 名前 テキスト画面の表示開始 対象 ノーマル,ハイレゾ 入力 AH=0Ch 出力 なし 解説 o テキストVRAMの表示をONにする。 テキストGDCにSTART(表示開始)コマンドを送る。 u PC-9801初代・E・F・M・U・VM2・VFとPC-98XA・XL・XL^2・RL, PC-H98, PC-9821Af・Ap・ As・Ae・Ap2・As2のハイレゾモードでは、本ファンクションを実行した瞬間に 画面がちらつく場合がある。ちらつきをなくすには、VSYNCを待って 本ファンクションを実行すれば良い。 PC-9801UV2以降のノーマルモードでは、BIOS内にVSYNC待ちの処理が入って いる。VSYNCの発生タイミングを知るために、GDCステータス(I/O 0060h)を チェックしている。このため、INT 18h - Function 0Ehなどのように 他ルーチンが利用中のVSYNC割り込みが停止することはない。 u システム共通域には、本ファンクションで設定した状態を保存しておく 領域は用意されていない。 関連 INT 18h - Function 0Dh INT 18h - Function 0Ch(LT・HA) 分類 CRT BIOS 名前 テキスト・グラフィックの表示開始 対象 PC-98LT・HA 入力 AH=0Ch 出力 なし 解説 o VRAMの表示をONにする。 o PC-98LT・HAでは、テキスト画面もグラフィックVRAMに書き込まれているため、 必ず両方同時にONする。 関連 INT 18h - Function 0Dh(LT・HA) INT 18h - Function 0Dh 分類 CRT BIOS 名前 テキスト画面の表示停止 対象 ノーマル,ハイレゾ 入力 AH=0Dh 出力 なし 解説 o テキストVRAMの表示をOFFにする。 テキストGDCにSTOP(表示停止)コマンドを送る。 関連 INT 18h - Function 0Ch INT 18h - Function 0Dh(LT・HA) 分類 CRT BIOS 名前 テキスト・グラフィックの表示停止 対象 PC-98LT・HA 入力 AH=0Dh 出力 なし 解説 o VRAMの表示をOFFにする。 o PC-98LT・HAでは、テキスト画面もグラフィックVRAMに書き込まれているため、 必ず両方同時にOFFする。 関連 INT 18h - Function 0Ch(LT・HA) INT 18h - Function 0Eh 分類 CRT BIOS 名前 1つの表示領域の設定 対象 ノーマル,ハイレゾ,PC-98LT・HA 入力 AH=0Eh DX=テキストVRAMの表示開始オフセットアドレス 出力 DX=不定 解説 o 画面に表示するテキストVRAMの領域を指定する。テキストVRAM上の連続した 1つの領域を画面全体に表示させるとき、このファンクションを使用する。 u DXレジスタで指定したアドレス以降のデータが、画面左上から表示 される。ただし、DXレジスタには4の倍数を指定する。4の倍数以外を 指定すると、望み通りの表示にならない。 o 起動時はDX=0000hでこのファンクションを実行したのと同じ状態。 o PC-98LT・HAの場合、エミュレーションVRAMのオフセットアドレスを 指定することになる。 u このファンクションは、次のVSYNC発生を待って実際の処理を実行 する(PC-98LT・HAを除く)。VSYNC発生のタイミングを知るために、 VSYNC割り込み(INT 0Ah)を利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 o テキストGDCのSCROLLコマンドを使用している(PC-98LT・HAを除く)。 関連 INT 18h - Function 0Fh 図 テキストVRAM 画面表示 A000:0000h→+----------+ ―――――――― DX→|ABCDEFG・・・|………………|ABCDEFG | | | | | | | | | | | | | |・・・PC-9801|………………| PC-9801| | | ―――――――― | | | | | | +----------+ * 図のテキストVRAMのセグメントはノーマルモードの場合。ハイレゾ モードではE000h、PC-98LT・HAではエミュレーションVRAMのセグメント。 INT 18h - Function 0Fh 分類 CRT BIOS 名前 複数の表示領域の設定 対象 ノーマル,ハイレゾ,PC-98LT・HA 入力 AH=0Fh BX:CX=表示領域リストの先頭アドレス DH=設定変更する表示領域番号n(0〜3) DL=表示領域の個数m(1〜4) (n + m ≦ 4) <表示領域リストの形式> ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- BX:CX+00h(WORD)|表示領域n+0の開始オフセットアドレス BX:CX+02h(WORD)|表示領域n+0の行数 BX:CX+04h(WORD)|表示領域n+1の開始オフセットアドレス BX:CX+06h(WORD)|表示領域n+1の行数 BX:CX+08h(WORD)|表示領域n+2の開始オフセットアドレス BX:CX+0Ah(WORD)|表示領域n+2の行数 BX:CX+0Ch(WORD)|表示領域n+3の開始オフセットアドレス BX:CX+0Eh(WORD)|表示領域n+3の行数 ---------------+----------------------------------- 出力 なし 解説 o 画面に表示するテキストVRAMの領域を指定する。テキストVRAM上の複数の 領域を画面に表示させるとき、このファンクションを使用する。 画面は、行単位で最大4つの領域に分割できる。それぞれの領域の行数と、 表示するテキストVRAM上のアドレスを任意に指定できる。画面上の各領域の 左上から、指定したテキストVRAMのデータが表示される。 o DLで、画面を何分割するかを指定する。 DHで、変更する表示領域の先頭の番号を指定する。 つまり、DHで指定した表示領域から、DH+DL-1の表示領域までのパラメータが 変更されることになる。 o BX:CXで、表示領域リストを格納したメモリの先頭アドレスを指定する。表示 領域リストには、DLで指定した個数のデータを用意しておく。 表示領域の開始オフセットアドレスには4の倍数を指定する。4の倍数以外を 指定すると、望み通りの表示にならない。 各表示領域の行数の総和は、表示行数と同じでなければならない。総和が 表示行数を超えた場合、超えた部分は表示されない。総和が表示部分より 小さい場合の動作は保証されていない。実際には、表示領域#0からの内容が 繰り返して表示されるが、文字が乱れる場合がある。 u DH + DL > 4となるような値を設定すると、ラップアラウンドが 起こる。たとえば、DH=3、DL=2を指定すると、表示領域3と表示領域0の 設定が行える。ただし、GDCのマニュアルで規定されていない使用方法と なるので、この特性を利用してプログラムを作成しないほうが良い。 u テクニカルデータブックには、テキストVRAMの開始アドレスをGDCアドレスで 指定するという記述があるが、CPUアドレスのオフセットアドレスで指定する。 PC-98LT・HAの場合、エミュレーションVRAMのオフセットアドレスを 指定することになる。 u このファンクションは、次のVSYNC発生を待って実際の処理を実行 する(PC-98LT・HAを除く)。VSYNC発生のタイミングを知るために、 VSYNC割り込み(INT 0Ah)を利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 o テキストGDCのSCROLLコマンドを使用している(PC-98LT・HAを除く)。 図 テキストVRAM 画面表示 A000:0000h→+----------+ ―――――――― 領域#0先頭→|DTC-77ES |………………|DTC-77ES | | | | | |・・・・・・・・・・|………………|EV-BS3000 | | | …… | | 領域#1先頭→|EV-BS3000 |…… ……|CLD-919 | | | …… | | 領域#2先頭→|CLD-919 |…… …|WM-DT1 | | | ……… | | |・・・・・・・・・・|…… … … ―――――――― | | … … 領域#3先頭→|WM-DT1 |…… … | | … +----------+…… * 図のテキストVRAMのセグメントはノーマルモードの場合。ハイレゾ モードではE000h、PC-98LT・HAではエミュレーションVRAMのセグメント。 o 複数領域の表示は、テキストGDCの機能を利用して行っている。ここで、 テキストGDCがテキスト画面を表示する仕組みについて簡単に説明する。 ●テキストGDC内のレジスタ テキストGDCは、その内部に表示領域に関する情報を保持しておくための レジスタを4組持っている(下図)。1組分のレジスタには、その表示領域の 行数と、テキストVRAMの開始アドレスを保持できるようになっている。 [テキストGDC内のレジスタ] +-----------------------------------------+ |表示領域0のテキストVRAM開始アドレス(SAD1)| |表示領域0の行数(SL1) | |表示領域1のテキストVRAM開始アドレス(SAD2)| |表示領域1の行数(SL2) | |表示領域2のテキストVRAM開始アドレス(SAD3)| |表示領域2の行数(SL3) | |表示領域3のテキストVRAM開始アドレス(SAD4)| |表示領域3の行数(SL4) | +-----------------------------------------+ ●画面表示の手順 テキストGDCは、画面表示の際このレジスタの内容を参照して、表示する テキストVRAMのアドレスを発生させる。 まず、SAD1で指定されたアドレスからSL1で指定された行数分、テキストVRAM の内容を表示する。このとき、表示した行数が最大表示行数(PC-9800では 20,25,31行のいずれか)よりも少なかった場合は、さらにSAD2で指定された アドレスからSL2で指定された行数分、テキストVRAMの内容を表示する。 以下、表示した行数が最大表示行数に達するまで同じことを繰り返す。 ●レジスタ内容の書き換え方法 レジスタの内容は、テキストGDCにSCROLLコマンドを発行して書き換える ことができる。 SCROLLコマンドでレジスタの内容を書き換えるとき、必ずしも全部を 設定し直す必要はない。レジスタ内の任意のパラメータだけを書き換え られる。たとえば、SL2の値だけ変更するようなことが可能である (ただし、INT 18h - Function 0Fhでは、必ず開始アドレスと行数は ペアで変更しなければならない)。 ●レジスタ内容の書き換えによる表示の変化 たとえば、3個の領域を表示しているときを考えてみる。表示領域1の行数を 減らすと、表示領域2の画面上の表示位置が上がる。逆に、表示領域1の行数 を増やせば、表示領域2の表示位置が下がる。 また、表示領域3のパラメータを変更しても、画面表示は変化しない。 ●起動時の状態 表示領域0のテキストVRAM開始アドレスは0000hに、表示領域0の行数は テキスト画面の表示行数と同じ値に設定される。つまり、1個の表示領域が 設定されていることになる。 ●その他 各領域のテキストVRAM開始アドレスは、必ずしも昇順になっている 必要はない。 関連 INT 18h - Function 0Eh INT 18h - Function 10h 分類 CRT BIOS 名前 カーソルタイプの設定 対象 ノーマル,ハイレゾ,PC-98LT・HA 入力 AH=10h AL=カーソルブリンク 00h: 点滅 01h: 常時点灯 出力 なし 解説 o カーソルをブリンク(点滅)させるかどうかの設定を行う。 u このファンクションを実行するとカーソル表示がOFFになる。カーソル 表示が必要なときはINT 18h - Function 11hを実行する。 u 一部のテクニカルデータブックには、ALの値の意味が逆に記述されている。 u ノーマルモードでは、システム共通域に現在のカーソルのブリンク状態が 保存されない。ハイレゾ,PC-98LT・HAでは保存されている。 o ハイレゾモードではINT 18h - Function 1Ch,1Ehでブリンク速度やカーソルの 形状を変更できる。 ノーマルモードとPC-98LT・HAでは、ブリンク速度や形状をBIOSで変更すること はできない。ノーマルモードは、テキストGDCにCSRFORMコマンドを発行すれば 変更可能。 u このファンクションは、次のVSYNC発生を待って実際の処理を実行 する(PC-98LT・HAを除く)。VSYNC発生のタイミングを知るために、 VSYNC割り込み(INT 0Ah)を利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 o テキストGDCのCSRFORMコマンドを使用している(PC-98LT・HAを除く)。 関連 INT 18h - Function 11h INT 18h - Function 1Ch[ハイレゾ] INT 18h - Function 1Eh[ハイレゾ] 0000:0452h[ハイレゾ] 0000:04F0h[PC-98LT・HA] INT 18h - Function 11h 分類 CRT BIOS 名前 カーソルの表示開始 対象 ノーマル,ハイレゾ,PC-98LT・HA 入力 AH=11h 出力 なし 解説 o カーソル表示をONにする。 u ノーマルモードでは、システム共通域に現在のカーソルのON/OFF状態が 保存されない。ハイレゾ,PC-98LT・HAでは保存されている。 o テキストGDCのCSRFORMコマンドを使用している(PC-98LT・HAを除く)。 関連 INT 18h - Function 12h 0000:053Bh 0000:0452h[ハイレゾ] 0000:04F0h[PC-98LT・HA] INT 18h - Function 12h 分類 CRT BIOS 名前 カーソルの表示停止 対象 ノーマル,ハイレゾ,PC-98LT・HA 入力 AH=12h 出力 なし 解説 o カーソル表示をOFFにする。 u ノーマルモードでは、システム共通域に現在のカーソルのON/OFF状態が 保存されない。ハイレゾ,PC-98LT・HAでは保存されている。 o テキストGDCのCSRFORMコマンドを使用している(PC-98LT・HAを除く)。 関連 INT 18h - Function 11h 0000:053Bh 0000:0452h[ハイレゾ] INT 18h - Function 1Ch[ハイレゾ] 0000:04F0h[PC-98LT・HA] INT 18h - Function 13h 分類 CRT BIOS 名前 カーソル位置の設定 対象 ノーマル,ハイレゾ,PC-98LT・HA 入力 AH=13h DX=カーソル位置(テキストVRAMのオフセットアドレス) 出力 なし 解説 o DXレジスタで指定したアドレスに対応する画面位置にカーソルを 移動する。値は偶数を指定する。 u PC-98LT・HA以外では、システム共通域に現在のカーソル位置が保存され ない。テキストGDCにCSRRコマンドを発行すれば、カーソル位置を取得する ことができる。 o テキストGDCのCSRWコマンドを使用している(PC-98LT・HAを除く)。 関連 0000:04F2h[PC-98LT・HA] INT 18h - Function 14h 分類 CRT BIOS 名前 フォントパターンの読み出し(16ドット) 対象 ノーマル,PC-98LT・HA 入力 AH=14h BX:CX=フォントパターンバッファの先頭アドレス DX=文字コード (1)6×7ドットフォント(640×200ディスプレイ用ANKフォント) DH=00h DL=文字コード(00〜FFh) * 00〜1Fhを指定すると制御キャラクタ、80〜9FhとE0〜FFhを 指定するとグラフィックキャラクタが読み出される。 (2)7×13ドットフォント(640×400ディスプレイ用ANKフォント) DH=80h DL=文字コード(00〜FFh) * 00〜1Fhを指定すると制御キャラクタ、80〜9FhとE0〜FFhを 指定するとグラフィックキャラクタが読み出される。 (3)8×16ドットフォント(2バイト半角) DX=JIS漢字コード(2921〜297Eh,2A21〜2A7Eh,2B21〜2B7Eh) * DHに1バイト目、DLに2バイト目をセットする * PC-H98は、7840〜787Eh,7D21〜7D7Eh,7E21〜7E7Ehの外字も 2バイト半角 (4)16×16ドットフォント(2バイト全角) DX=JIS漢字コード * DHに1バイト目、DLに2バイト目をセットする 出力 AH=不定 BX=不定 CX=不定 DX=不定 <フォントパターンバッファの形式> ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- BX:CX+00h(BYTE)|縦方向のドット数 |01h= 8ドット |02h=16ドット BX:CX+01h(BYTE)|横方向のドット数 |01h= 8ドット |02h=16ドット BX:CX+02h〜 |フォントパターンデータ |6×7ドットフォント……………8バイト |7×13,8×16ドットフォント…16バイト |16×16ドットフォント ………32バイト ---------------+----------------------------------- <フォントパターンデータの形式> (1)6×7ドットフォント ---------------+----------------------------------------------- アドレス |内容 ---------------+----------------------------------------------- BX:CX+02h |フォント上端(bit 7=文字の左端,bit 0=文字の右端) : | BX:CX+09h |フォント下端(bit 7=文字の左端,bit 0=文字の右端) ---------------+----------------------------------------------- +-----+ 1ライン目 | +02h| +-----+ 2ライン目 | +03h| +-----+ : | : | +-----+ 8ライン目 | +09h| +-----+ (2)7×13,8×16ドットフォント ---------------+----------------------------------------------- アドレス |内容 ---------------+----------------------------------------------- BX:CX+02h |フォント上端(bit 7=文字の左端,bit 0=文字の右端) : | BX:CX+11h |フォント下端(bit 7=文字の左端,bit 0=文字の右端) ---------------+----------------------------------------------- +-----+ 1ライン目 | +02h| +-----+ 2ライン目 | +03h| +-----+ : | : | +-----+ 16ライン目 | +11h| +-----+ (3)16×16ドットフォント ---------------+----------------------------------------------- アドレス |内容 ---------------+----------------------------------------------- BX:CX+02h |フォント上端の左半分(bit 7=文字の左端) BX:CX+03h |フォント上端の右半分(bit 0=文字の右端) : | BX:CX+20h |フォント下端の左半分(bit 7=文字の左端) BX:CX+21h |フォント下端の右半分(bit 0=文字の右端) ---------------+----------------------------------------------- +-----+-----+ 1ライン目 | +02h| +03h| +-----+-----+ 2ライン目 | +04h| +05h| +-----+-----+ : | : | : | +-----+-----+ 16ライン目 | +20h| +21h| +-----+-----+ 解説 o 指定されたフォントのパターンデータをバッファに書き込む。 パターンデータは、ANK/漢字/外字のキャラクタジェネレータから読み 出す(ただし、PC-9801初代には外字のキャラクタジェネレータはない)。 o テクニカルデータブックでは、2種類ある1バイトANKフォントを区別する ために、6×7ドットフォント/7×13ドットフォントと表記している。しかし、 どちらも実際には最大8×8ドット/8×16ドットの大きさのフォントである (アスキーコード87hの箱型のグラフィック文字がそれにあたる)。本書では、 テクニカルデータブックに従って、6×7ドットフォント/7×13ドット フォントという表記を用いた。 また、7×13ドットフォントと8×16ドットフォントは、どちらも最大8×16 ドットのフォントであるが、フォントデザインが異なる。 u テクニカルデータブックには、「グラフィック画面に表示できる半角文字 一覧表」という表中にひらがなのフォントが書かれているが、このフォントは BIOSでは取得できない。その表の注に書かれているように、グラフLIOのROM 内に存在しているだけである。 u このファンクションで2バイト文字のフォントを読み出す場合、KCGアクセス モードがドットアクセスモードになっているときのほうが、高速に処理が 終了する。ドットアクセスモードでは常時KCGにアクセスできるためで ある。コードアクセスモードのときは、KCGにVSYNC期間しかアクセスでき ないため、時間がかかる。「用語:KCGアクセスモード」を参照。 ANK文字のフォントを読み出す場合は、KCGアクセスモードにかかわらず 処理時間は変わらない。常にVSYNC期間にしかキャラクタジェネレータに アクセスできないためである。 u このファンクションは、KCGアクセスモードがコードアクセスモードのとき、 次のVSYNC発生を待って実際の処理を実行する(PC-98LT・HAを除く)。VSYNC 発生のタイミングを知るために、VSYNC割り込み(INT 0Ah)を利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 u ハイレゾモードで実行すると、フォントパターンバッファのオフセット +02h以降が、指定されたフォントに従ったバイト数分、FFhで埋められる。 オフセット+00h,+01hにも値がセットされる。+00hには、縦方向のドット 数が8ドットのとき08h、16ドットのとき10hが入る。+01hはノーマルモードと 同じ。 関連 INT 18h - Function 1Ah INT 18h - Function 15h 分類 CRT BIOS 名前 ライトペン位置の読み出し 対象 ノーマル(一部機種を除く) 入力 AH=15h 出力 AH=ライトペンの状態 00h: 押されている 01h: 押されていない * ライトペン非サポート機では、常に01hが返る ■AH=00hのとき DX=押された位置に対応するテキストVRAMのオフセットアドレス 解説 o ライトペンの押下状態と、ペンが押された位置に対応するテキストVRAMの オフセットアドレスを返す。 o テキストGDCのLPENコマンドを使用して、ライトペンの位置を取得する。 u ノーマルモードでも、モノクロコネクタまたはデジタルRGB/モノクロ両用 コネクタを持たない機種はライトペンをサポートしていない。 デジタルRGB/モノクロ両用コネクタを持つ機種のうち、 PC-9801FA・FS・FX・USはこのファンクションをサポートしていない。 u ハイレゾモードで実行すると、常に01hが返る。 関連 INT 18h - Function 19h INT 18h - Function 16h 分類 CRT BIOS 名前 テキストVRAMの初期化 対象 ノーマル,ハイレゾ,PC-98LT・HA 入力 AH=16h DH=アトリビュート領域を埋めるデータ bit 7: G - グリーン bit 6: R - レッド bit 5: B - ブルー bit 4: VL - バーティカルライン(1=表示、0=無表示) bit 3: UL - アンダーライン(1=表示、0=無表示) bit 2: RV - リバース(1=反転、0=非反転) bit 1: BL - ブリンク(1=点滅、0=非点滅) bit 0: ST - シークレット(1=文字表示、0=無表示) DL=文字領域を埋める文字コード(00〜FFh) 出力 AH=不定 DX=不定 解説 o テキストVRAMの全領域を指定された文字とアトリビュートで埋める。 テキストVRAMの文字領域の奇数番地は00hで埋められるので、2バイト文字で クリアすることはできない。 o PC-98LT・HAでは、bit 1(ブリンク)をサポートしない。また、bit 7〜5= 000b以外で文字表示する。 関連 INT 18h - Function 16h(H98) 分類 CRT BIOS 名前 テキストVRAMの初期化(PC-H98の拡張アトリビュートモード時) 対象 PC-H98 入力 AH=16h DL=文字領域を埋める文字コード(00〜FFh) DH=拡張アトリビュート領域を埋めるデータ(偶数番地) BL=拡張アトリビュート領域を埋めるデータ(奇数番地) 出力 AH=不定 BL=不定 DX=不定 解説 o テキストVRAMの全領域を指定された文字とアトリビュートで埋める。 PC-H98の拡張アトリビュートモードでは、アトリビュートが16ビット幅に なる。 テキストVRAMの文字領域の奇数番地は00Hで埋められるので、2バイト文字で クリアすることはできない。 u PC-H98シリーズテクニカルデータブックでは、ファンクション実行後の BPレジスタが不定になっているが、実際には変化しない。 関連 用語:拡張アトリビュート INT 18h - Function 17h 分類 CRT BIOS 名前 ブザーの起呼 対象 ノーマル,ハイレゾ 入力 AH=17h 出力 なし 解説 o ブザーをONにする。ブザーは自動的には停止せず、鳴りつづける。 o ハイレゾモードでは、INT 18h - Funciton 23hで設定した周波数で鳴る。 o ノーマルモードでは、BIOSでブザーの周波数を変更することはできないが、 8253A(I/O 3FDBh)に直接アクセスすれば周波数を変えられる(PC-9801初代・ E・F・Mを除く)。 u '86年版テクニカルデータブックにのみ、ファンクション実行後AHレジスタが 不定になるという記述があるが、実際には変化しない。 u PC-98LT・HAは本ファンクションをサポートしない。 関連 INT 18h - Funciton 18h I/O 0035h bit 3 I/O 3FDBh INT 18h - Funciton 23h[ハイレゾ] INT 18h - Funciton 24h[ハイレゾ] INT 1Ch - Funciton 06h[ハイレゾ] INT 18h - Function 18h 分類 CRT BIOS 名前 ブザーの停止 対象 ノーマル,ハイレゾ 入力 AH=18h 出力 なし 解説 o ブザーをOFFにする。 u '86年版テクニカルデータブックにのみ、ファンクション実行後AHレジスタが 不定になるという記述があるが、実際には変化しない。 u PC-98LT・HAは本ファンクションをサポートしない。 関連 INT 18h - Funciton 17h I/O 0035h bit 3 INT 18h - Function 19h 分類 CRT BIOS 名前 ライトペン押下状態の初期化 対象 ノーマル 入力 AH=19h 出力 AH=不定 解説 o INT 18h - Function 15hでライトペンの状態を取得するとき、前もって 実行する。 u ノーマルモードでも、モノクロコネクタまたはデジタルRGB/モノクロ 両用コネクタを持たない機種はライトペンをサポートしない。 デジタルRGB/モノクロ両用コネクタを持つ機種でも、PC-9801FA・FS・FX・USは このファンクションをサポートしていない。 u ハイレゾモードでは無動作。 関連 INT 18h - Function 15h INT 18h - Function 1Ah 分類 CRT BIOS 名前 ユーザ文字の定義(16ドット) 対象 ノーマル(PC-9801初代,PC-H98を除く),PC-98LT・HA 入力 AH=1Ah BX:CX=フォントパターンバッファ(34バイト)の先頭アドレス <フォントパターンバッファの形式> ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- BX:CX+00h(WORD)|ワークエリア BX:CX+02h〜 |フォントパターンデータ(32バイト) ---------------+----------------------------------- <フォントパターンデータの形式> ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- BX:CX+02h |フォント上端の左半分(bit 7=文字の左端) BX:CX+03h |フォント上端の右半分(bit 0=文字の右端) : | BX:CX+20h |フォント下端の左半分(bit 7=文字の左端) BX:CX+21h |フォント下端の右半分(bit 0=文字の右端) ---------------+----------------------------------- +-----+-----+ 1ライン目 | +02h| +03h| +-----+-----+ 2ライン目 | +04h| +05h| +-----+-----+ : | : | : | +-----+-----+ 16ライン目 | +20h| +21h| +-----+-----+ DX=登録文字コード ---------------+--------------------+-------------------- 機種 |JIS漢字コードの |実際に |範囲内で登録可能な値|登録可能な値 ---------------+--------------------+-------------------- PC-9801E・F・M・U |7621〜765Fh |7620〜765Fh |(合計63文字) |(合計64文字) その他 |7621〜767Eh |7601〜7680h |7721〜777Eh |7701〜7780h |(合計188文字) |(合計256文字) ---------------+--------------------+-------------------- 出力 AH=不定 BX=不定 CX=不定 DX=不定 解説 o 16×16ドットのユーザ定義文字を外字のキャラクタジェネレータに 登録する。 PC-9801初代は外字機能を持っていない。 o 登録可能な文字コードは、機種により異なる。JIS漢字コードの範囲内で 使用する場合、63文字または188文字である。実際には、外字のキャラクタ ジェネレータには64文字または256文字分の領域がある。 JIS漢字コードの範囲から外れたコードをシフトJISで扱うことはできないが、 テキストVRAMに直接文字コードを書き込めば、画面に表示できる。 u このファンクションでフォントを登録する場合、KCGアクセスモードがドット アクセスモードになっているときのほうが、高速に処理が終了する。ドット アクセスモードでは常時KCGにアクセスできるためである。コードアクセス モードのときは、KCGにVSYNC期間しかアクセスできないため、時間が かかる。「用語:KCGアクセスモード」を参照。 u このファンクションは、KCGアクセスモードがコードアクセスモードのとき、 次のVSYNC発生を待って実際の処理を実行する(PC-98LT・HAを除く)。VSYNC 発生のタイミングを知るために、VSYNC割り込み(INT 0Ah)を利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 u ハイレゾモードでは無動作。 関連 INT 18h - Function 14h INT 18h - Function 1Ah(H98) 分類 CRT BIOS 名前 ユーザ文字の定義(16×16ドット,8×16ドット) Undocumented 対象 PC-H98 + ノーマル 入力 AH=1Ah BX:CX=フォントパターンバッファの先頭アドレス <フォントパターンバッファの形式> ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- BX:CX+00h(BYTE)|ワークエリア BX:CX+02h〜 |フォントパターンデータ | 8×16ドットフォント……16バイト |16×16ドットフォント……32バイト ---------------+----------------------------------- <フォントパターンデータの形式> (1)8×16ドットフォント ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- BX:CX+02h |フォント上端(bit 7=文字の左端, bit 0=文字の右端) : | BX:CX+11h |フォント下端(bit 7=文字の左端, bit 0=文字の右端) ---------------+----------------------------------- +-----+ 1ライン目 | +02h| +-----+ 2ライン目 | +04h| +-----+ : | : | +-----+ 16ライン目 | +11h| +-----+ (2)16×16ドットフォント ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- BX:CX+02h |フォント上端の左半分(bit 7=文字の左端) BX:CX+03h |フォント上端の右半分(bit 0=文字の右端) : | BX:CX+20h |フォント下端の左半分(bit 7=文字の左端) BX:CX+21h |フォント下端の右半分(bit 0=文字の右端) ---------------+----------------------------------- +-----+-----+ 1ライン目 | +02h| +03h| +-----+-----+ 2ライン目 | +04h| +05h| +-----+-----+ : | : | : | +-----+-----+ 16ライン目 | +20h| +21h| +-----+-----+ DX=登録文字コード -----------------+--------------------+-------------------- 文字幅 |JIS漢字コードの |実際に |範囲内で登録可能な値|登録可能な値 -----------------+--------------------+-------------------- 16ドット(全角) |7621〜767Eh(*) |7601〜7680h(*) |7721〜777Eh |7701〜7780h |7821〜783Fh |7801〜783Fh |(合計219文字) |(合計319文字) 8ドット(半角) |7840〜787Eh |7840〜7880h |7D21〜7D7Eh(*) |7D01〜7D80h(*) |7E21〜7E7Eh |7E01〜7E80h |(合計251文字) |(合計321文字) =================+====================+==================== 全角半角同時 |376文字 |512文字 使用時の合計 | | -----------------+--------------------+-------------------- * (*)印の外字は互いに領域を共有しているので、両方同時に使用 できない。このため、全角半角同時使用時の合計は、全角・半角の 単純合計より少なくなる。 出力 AH=不定 BX=不定 CX=不定 DX=不定 解説 o 16×16ドット(全角)または8×16ドット(半角)のユーザ定義文字を 外字のキャラクタジェネレータに登録する。 o PC-H98では、全角外字と半角外字が登録できる。JIS漢字コードの範囲内で 使用する場合、それぞれ219文字、251文字使用できる。ただし、全角外字と 半角外字の一部のコードで登録領域を共有しているため、全角半角同時使用 時の合計は、376文字になる。 実際には、外字のキャラクタジェネレータには512文字分の領域がある。 JIS漢字コードの範囲から外れたコードをシフトJISで扱うことはできないが、 テキストVRAMに直接文字コードを書き込めば、画面に表示できる。 u このファンクションでフォントを登録する場合、KCGアクセスモードがドット アクセスモードになっているときのほうが、高速に処理が終了する。ドット アクセスモードでは常時KCGにアクセスできるためである。コードアクセス モードのときは、KCGにVSYNC期間しかアクセスできないため、時間が かかる。「用語:KCGアクセスモード」を参照。 u このファンクションは、KCGアクセスモードがコードアクセスモードのとき、 次のVSYNC発生を待って実際の処理を実行する。VSYNC発生のタイミングを 知るために、VSYNC割り込み(INT 0Ah)を利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 o 漢字コードの7921〜797Eh,7A21〜7A7Eh,7B21〜7B7Eh,7C21〜7C7Ehには、 拡張漢字が割り当てられているため、半角外字のコードが分割されている。 u ハイレゾモードでは無動作。 関連 INT 18h - Function 14h INT 18h - Function 1Bh 分類 CRT BIOS 名前 KCGアクセスモードの設定 対象 ノーマル(PC-9801無印を除く),ハイレゾ 入力 AH=1Bh AL=アクセスモード 00h=コードアクセス 01h=ドットアクセス 出力 なし 解説 o KCG(漢字キャラクタジェネレータ)アクセスモードをドットアクセス、 またはコードアクセスに設定する。 u PC-9801初代には、このファンクションはない。常にコードアクセスモード。 u テクニカルデータブック(XA/XL版以外)では、ファンクション実行後の AXレジスタは不定という記述があるが、実際には変化しない。 u PC-98LT・HAでは無動作。テクニカルデータブックには、ノーマルモードと 互換の動作をするという記述があるが、テキストVRAMがないので常に ドットアクセスモードと同様の状態である。 関連 I/O 0068h - 0Ah,0Bh INT 18h - Function 1Ch 分類 CRT BIOS 名前 CRTの初期化 対象 ハイレゾ 入力 AH=1Ch AL=カーソル制御情報 bit 7: ブリンクの有無 1=あり 0=なし bit 6: カーソル表示の有無 1=あり 0=なし bit 5: KCGアクセスモード 1=ドットアクセスモード 0=コードアクセスモード bit 4〜0: カーソルブリンクレート 11111b(遅い) 11110b ↑ : 00010b ↓ 00001b(速い) 00000b=既定値(01100b) DH=カーソル形状(表示開始ライン) DL=カーソル形状(表示終了ライン) * DH,DLの値は実際のライン値の1/2とする。 25行表示時00〜0Eh、31行表示時00〜0Bh * DH=00h, DL=0Eh(25行表示時)/0Bh(31行表示時)に設定したとき最大サイズに なる。 出力 なし 解説 o カーソル表示の有無、カーソル形状、カーソルブリンクの有無、 ブリンクレート、KCGアクセスモードの設定を行う。 カーソル形状は、表示開始ラインと表示終了ラインだけが設定 できる。幅は常に半角または全角。 カーソルの形状は、表示開始ラインと表示終了ラインだけが設定 できる。幅は常に半角または全角。 u このファンクションは、次のVSYNC発生を待って実際の処理を実行 する。VSYNC発生のタイミングを知るために、VSYNC割り込み(INT 0Ah)を 利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 o テキストGDCのCSRFORMコマンドを使用している。 関連 INT 18h - Function 0Ah(ハイレゾ) INT 18h - Function 1Eh INT 18h - Function 1Dh 分類 CRT BIOS 名前 表示幅の設定 対象 ハイレゾ 入力 AH=1Dh AL=GDCが管理する物理的な桁数(範囲は80〜162の偶数) 出力 なし 解説 o GDCに対してテキストVRAMの1行あたりの桁数を設定する。 起動時は80が設定されている。 o 通常、テキスト表示の2行目にはテキストVRAMのオフセット00A0hからの データが表示されている(1桁あたり2バイト×80桁=160=A0hなので)。 このファンクションで、GDCが管理する物理的な桁数を82に設定した場合は、 テキスト表示の2行目にはテキストVRAMのオフセット00A4hからのデータが 表示されるようになる(1桁あたり2バイト×82桁=164=A4hなので)。 o ただし、このファンクションによる設定にかかわらず、画面に表示される テキスト画面は常に80桁である。テキストVRAMの80桁を超えた部分は画面に 表示されない。 u このファンクションは、次のVSYNC発生を待って実際の処理を実行 する。VSYNC発生のタイミングを知るために、VSYNC割り込み(INT 0Ah)を 利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 o テキストGDCのPITCHコマンドを使用している。 関連 INT 18h - Function 1Eh 分類 CRT BIOS 名前 カーソルタイプの設定 対象 ハイレゾ 入力 AH=1Eh AL=カーソル制御情報 bit 7: ブリンクの有無 1=あり 0=なし bit 6,5: 未使用 bit 4〜0: ブリンクレート 11111b(遅い) 11110b ↑ : 00010b ↓ 00001b(速い) 00000b=既定値(01100b) DH=カーソル表示開始ライン DL=カーソル表示終了ライン DH=カーソル形状(表示開始ライン) DL=カーソル形状(表示終了ライン) * DH,DLの値は実際のライン値の1/2とする。 25行表示時00〜0Eh、31行表示時00〜0Bh * DH=00h, DL=0Eh(25行表示時)/0Bh(31行表示時)に設定したとき最大サイズに なる。 出力 なし 解説 o カーソル形状とカーソルブリンクの有無、ブリンクレートの設定を行う。 カーソル形状は、表示開始ラインと表示終了ラインだけが設定 できる。幅は常に半角または全角。 u このファンクションは、次のVSYNC発生を待って実際の処理を実行 する。VSYNC発生のタイミングを知るために、VSYNC割り込み(INT 0Ah)を 利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 o テキストGDCのCSRFORMコマンドを使用している。 関連 INT 18h - Function 1Ch INT 18h - Function 1Fh 分類 CRT BIOS 名前 フォントパターンの読み出し(24ドット) 対象 ハイレゾ 入力 AH=1Fh DS:BX=フォントパターンバッファの先頭アドレス DX=文字コード (1)14×24ドットフォント(ANK) DH=00h DL=文字コード(00〜FFh) * 00〜1Fhを指定すると制御キャラクタ、80〜9FhとE0〜FFhを 指定するとグラフィックキャラクタが読み出される。 (2)14×24ドットフォント(2バイト半角) DX=JIS漢字コード(2921〜297Eh,2A21〜2A7Eh,2B21〜2B7Eh) * DHに1バイト目、DLに2バイト目をセットする * PC-H98は、7840〜787Eh,7D21〜7D7Eh,7E21〜7E7Ehの外字も 2バイト半角 (3)24×24ドットフォント(2バイト全角) DX=JISコード * DHに1バイト目、DLに2バイト目をセットする 出力 DL=不定 <フォントパターンバッファの形式> ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- DS:BX〜 |フォントパターンデータ |14×24ドットフォント…48バイト |24×24ドットフォント…72バイト ---------------+----------------------------------- <フォントパターンデータの形式> (1)14×24ドットフォント ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- DS:BX+00h |フォント上端の左半分(bit 5=文字の左端) DS:BX+01h |フォント上端の右半分(bit 0=文字の右端) : | DS:BX+2Eh |フォント下端の左半分(bit 5=文字の左端) DS:BX+2Fh |フォント下端の右半分(bit 0=文字の右端) ---------------+----------------------------------- * フォントは14×24ドット構成なので、偶数バイトのbit 7,6は常に0 +-----+-----+ 1ライン目 | +00h| +01h| +-----+-----+ 2ライン目 | +02h| +03h| +-----+-----+ : | : | : | +-----+-----+ 24ライン目 | +2Eh| +2Fh| +-----+-----+ (2)24×24ドットフォント ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- DS:BX+00h |フォント上端の左1/3 DS:BX+01h |フォント上端の中央1/3 DS:BX+02h |フォント上端の右1/3 : | DS:BX+45h |フォント下端の左1/3 DS:BX+46h |フォント下端の中央1/3 DS:BX+47h |フォント下端の右1/3 ---------------+----------------------------------- * 文字の左端がbit 7,右端がbit 0 +-----+-----+-----+ 1ライン目 | +00h| +01h| +02h| +-----+-----+-----+ 2ライン目 | +03h| +04h| +05h| +-----+-----+-----+ : | : | : | : | +-----+-----+-----+ 24ライン目 | +45h| +46h| +47h| +-----+-----+-----+ 解説 o 指定されたフォントのパターンデータをバッファに書き込む。 パターンデータは、ANK/漢字/外字のキャラクタジェネレータから読み 出す。 o ハイレゾモードでは、ANKフォント・2バイト半角フォントとも、最大 14×24ドットの大きさのフォントである(アスキーコード87hの箱型の グラフィック文字・JIS漢字コード2B60hの罫線素片がそれにあたる)。 u このファンクションで2バイト文字のフォントを読み出す場合、KCGアクセス モードがドットアクセスモードになっているときのほうが、高速に処理が 終了する。ドットアクセスモードでは常時KCGにアクセスできるためで ある。コードアクセスモードのときは、KCGにVSYNC期間しかアクセスでき ないため、時間がかかる。「用語:KCGアクセスモード」を参照。 ANK文字のフォントを読み出す場合は、KCGアクセスモードにかかわらず 処理時間は変わらない。常にVSYNC期間にしかキャラクタジェネレータに アクセスできないためである。 u このファンクションは、KCGアクセスモードがコードアクセスモードのとき、 次のVSYNC発生を待って実際の処理を実行する。VSYNC発生のタイミングを 知るために、VSYNC割り込み(INT 0Ah)を利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 関連 INT 18h - Function 20h INT 18h - Function 20h 分類 CRT BIOS 名前 ユーザ文字の定義(24ドット) 対象 ハイレゾ(PC-H98を除く) 入力 AH=20h DS:BX=フォントパターンバッファの先頭アドレス <フォントパターンバッファの形式> ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- DS:BX〜 |フォントパターンデータ |24×24ドットフォント…72バイト ---------------+----------------------------------- <フォントパターンデータの形式> ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- DS:BX+00h |フォント上端の左1/3 DS:BX+01h |フォント上端の中央1/3 DS:BX+02h |フォント上端の右1/3 : | DS:BX+45h |フォント下端の左1/3 DS:BX+46h |フォント下端の中央1/3 DS:BX+47h |フォント下端の右1/3 ---------------+----------------------------------- * 文字の左端がbit 7,右端がbit 0 +-----+-----+-----+ 1ライン目 | +00h| +01h| +02h| +-----+-----+-----+ 2ライン目 | +03h| +04h| +05h| +-----+-----+-----+ | : | : | : | | : | : | : | +-----+-----+-----+ 24ライン目 | +45h| +46h| +47h| +-----+-----+-----+ DX=登録文字コード ---------------+--------------------+-------------------- 機種 |JIS漢字コードの |実際に |範囲内で登録可能な値|登録可能な値 ---------------+--------------------+-------------------- PC-H98以外 |7621〜767Eh |7600〜767Fh |7721〜777Eh |7700〜777Fh |(合計188文字) |(合計256文字) ---------------+--------------------+-------------------- 出力 DL=不定 解説 o 24×24ドットのユーザ定義文字を外字のキャラクタジェネレータに 登録する。 o 登録可能な文字コードは、JIS漢字コードの範囲内で使用する場合、188文字 である。実際には、外字のキャラクタジェネレータには256文字分の領域が ある。JIS漢字コードの範囲から外れたコードをシフトJISで扱うことはでき ないが、テキストVRAMに直接文字コードを書き込めば、画面に表示できる。 u このファンクションでフォントを登録する場合、KCGアクセスモードがドット アクセスモードになっているときのほうが、高速に処理が終了する。ドット アクセスモードでは常時KCGにアクセスできるためである。コードアクセス モードのときは、KCGにVSYNC期間しかアクセスできないため、時間が かかる。「用語:KCGアクセスモード」を参照。 u このファンクションは、KCGアクセスモードがコードアクセスモードのとき、 次のVSYNC発生を待って実際の処理を実行する。VSYNC発生のタイミングを 知るために、VSYNC割り込み(INT 0Ah)を利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 u テクニカルデータブックでは、文字コード7620〜765Fhの64文字が登録 可能となっているが、前記表の通りの文字コードが使用できる。 関連 INT 18h - Function 1Fh INT 18h - Function 20h(H98) 分類 CRT BIOS 名前 ユーザ文字の定義(24×24ドット,14×24ドット) Undocumented 対象 PC-H98 + ハイレゾ 入力 AH=20h DS:BX=フォントパターンバッファの先頭アドレス <フォントパターンバッファの形式> ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- DS:BX〜 |フォントパターンデータ |14×24ドットフォント…48バイト |24×24ドットフォント…72バイト ---------------+----------------------------------- <フォントパターンデータの形式> (1)14×24ドットフォント ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- DS:BX+00h |フォント上端の左半分(bit 5=文字の左端) DS:BX+01h |フォント上端の右半分(bit 0=文字の右端) : | DS:BX+2Eh |フォント下端の左半分(bit 5=文字の左端) DS:BX+2Fh |フォント下端の右半分(bit 0=文字の右端) ---------------+----------------------------------- * フォントは14×24ドット構成なので、偶数バイトのbit 7,6は使用しない +-----+-----+ 1ライン目 | +00h| +01h| +-----+-----+ 2ライン目 | +02h| +03h| +-----+-----+ : | : | : | +-----+-----+ 24ライン目 | +2Eh| +2Fh| +-----+-----+ (2)24×24ドットフォント ---------------+----------------------------------- アドレス |内容 ---------------+----------------------------------- DS:BX+00h |フォント上端の左1/3 DS:BX+01h |フォント上端の中央1/3 DS:BX+02h |フォント上端の右1/3 : | DS:BX+45h |フォント下端の左1/3 DS:BX+46h |フォント下端の中央1/3 DS:BX+47h |フォント下端の右1/3 ---------------+----------------------------------- * 文字の左端がbit 7,右端がbit 0 +-----+-----+-----+ 1ライン目 | +00h| +01h| +02h| +-----+-----+-----+ 2ライン目 | +03h| +04h| +05h| +-----+-----+-----+ | : | : | : | | : | : | : | +-----+-----+-----+ 24ライン目 | +45h| +46h| +47h| +-----+-----+-----+ DX=登録文字コード -----------------+--------------------+-------------------- 文字幅 |JIS漢字コードの |実際に |範囲内で登録可能な値|登録可能な値 -----------------+--------------------+-------------------- 16ドット(全角) |7621〜767Eh(*) |7601〜7680h(*) |7721〜777Eh |7701〜7780h |7821〜783Fh |7801〜783Fh |(合計219文字) |(合計319文字) 8ドット(半角) |7840〜787Eh |7840〜7880h |7D21〜7D7Eh(*) |7D01〜7D80h(*) |7E21〜7E7Eh |7E01〜7E80h |(合計251文字) |(合計321文字) =================+====================+==================== 全角半角同時 |376文字 |512文字 使用時の合計 | | -----------------+--------------------+-------------------- * (*)印の外字は互いに領域を共有しているので、両方同時に使用 できない。このため、全角半角同時使用時の合計は、全角・半角の 単純合計より少なくなる。 出力 DL=不定 解説 o 24×24ドット(全角)または14×24ドット(半角)のユーザ定義文字を 外字のキャラクタジェネレータに登録する。 o PC-H98では、全角外字と半角外字が登録できる。JIS漢字コードの範囲内で 使用する場合、それぞれ219文字、251文字使用できる。ただし、全角外字と 半角外字の一部のコードで登録領域を共有しているため、全角半角同時使用 時の合計は、376文字になる。 実際には、外字のキャラクタジェネレータには512文字分の領域がある。 JIS漢字コードの範囲から外れたコードをシフトJISで扱うことはできないが、 テキストVRAMに直接文字コードを書き込めば、画面に表示できる。 u このファンクションでフォントを登録する場合、KCGアクセスモードがドット アクセスモードになっているときのほうが、高速に処理が終了する。ドット アクセスモードでは常時KCGにアクセスできるためである。コードアクセス モードのときは、KCGにVSYNC期間しかアクセスできないため、時間が かかる。「用語:KCGアクセスモード」を参照。 u このファンクションは、KCGアクセスモードがコードアクセスモードのとき、 次のVSYNC発生を待って実際の処理を実行する。VSYNC発生のタイミングを 知るために、VSYNC割り込み(INT 0Ah)を利用している。 このときの処理に問題があり、他にもVSYNC割り込みを継続利用している ルーチンがある場合、本ファンクションを実行すると、そのルーチンの VSYNC割り込みが停止してしまう。 引き続きVSYNC割り込みを発生させたい場合は、本ファンクション実行後、 I/O 0064hへのOUTが必要となる。 o 漢字コードの7921〜797Eh,7A21〜7A7Eh,7B21〜7B7Eh,7C21〜7C7Ehには、 拡張漢字が割り当てられているため、半角外字のコードが分割されている。 関連 INT 18h - Function 1Fh INT 18h - Function 21h 分類 MEMORY SWITCH BIOS 名前 メモリスイッチの読み出し(Read Memory Switch) 対象 ハイレゾ,PC-98LT・HA 入力 AH=21h AL=メモリスイッチ番号 ハイレゾ:01〜08h PC-98LT :01〜1Fh PC-98HA :01〜21h 出力 DL=メモリスイッチの内容 解説 o メモリスイッチから読み出しを行う。 u ハイレゾでメモリスイッチ番号に1〜8以外の値を指定すると、無効な値が 読みだされる。 u PC-98LT・HAには、メモリスイッチ番号の00〜FFhに対応する不揮発性RAMが 存在するが、全ての領域がメモリスイッチとして使用できるのかどうかは 不明。 関連 メモリスイッチ一覧(memsw.txt) INT 18h - Function 22h I/O 0068h - 0Ch,0Dh INT 18h - Function 22h 分類 MEMORY SWITCH BIOS 名前 メモリスイッチの書き込み(Write Memory Switch) 対象 ハイレゾ,PC-98LT・HA 入力 AH=22h AL=スイッチ番号 ハイレゾ:01〜08h PC-98LT :01〜1Fh PC-98HA :01〜21h DL=スイッチの内容 出力 なし 解説 o メモリスイッチに書き込みを行う。 u ハイレゾでメモリスイッチ番号に1〜8以外の値を指定すると、なにもしない。 u PC-98LT・HAには、メモリスイッチ番号の00〜FFhに対応する不揮発性RAMが 存在する。00〜FFhの全てにこのファンクションで書き込みが行えるが、 全ての領域がメモリスイッチとして使用できるのかどうかは不明。 関連 メモリスイッチ一覧(memsw.txt) INT 18h - Function 21h I/O 0068h - 0Ch,0Dh INT 18h - Function 23h 分類 BEEP BIOS 名前 ブザー周波数の設定 対象 ハイレゾ 入力 AH=23h DX=周波数(38〜32,768Hz) 出力 なし 解説 o ブザーの音程を設定する。 u テクニカルデータブックには、周波数に32(20h)Hz〜32,768(8000h)Hzが 指定できるという記述があるが、38(26h)以上でなければならない。 システムクロックが10MHz(タイマクロックが2.5MHz)のとき、37(25h)以下の 値を指定すると、8253Aに設定する分周値が16ビットを超える。ブザー周波数 を格納するワークエリアは16ビット分しかないので、正しく音程が設定でき ない。 上限は、実際にはFFFFh(65.535kHz)である。しかし、可聴周波数範囲内で あっても、あまり高い周波数を設定するとスピーカが追従しない。 関連 0000:0490h I/O 0073h INT 18h - Function 24h 分類 BEEP BIOS 名前 ブザーの時間設定と鳴動 対象 ハイレゾ 入力 AH=24h CX=鳴動時間(単位:10msec) * 0の時鳴動しない DX=周波数(38〜32,768Hz) 出力 なし 解説 o 指定された時間と周波数でビープ音を鳴らす。ビープ停止はタイマ割り込みで 行うため、BIOS処理はビープ停止を待たずに終了する。 u このファンクションを実行しても、INT 18h - Function 23hで設定した デフォルトのブザー周波数には影響を与えない。 u テクニカルデータブックには、周波数に32(20h)Hz〜32,768(8000h)Hzが 指定できるという記述があるが、38(26h)以上でなければならない。 システムクロックが10MHz(タイマクロックが2.5MHz)のとき、37(25h)以下の 値を指定すると、8253Aに設定する分周値が16ビットを超える。ブザー周波数 を格納するワークエリアは16ビット分しかないので、正しく音程が設定でき ない。 上限は、実際にはFFFFh(65.535kHz)である。しかし、可聴周波数範囲内で あっても、あまり高い周波数を設定するとスピーカが追従しない。 o INT 1Ch - Function 06hでは、DXレジスタに8253Aの分周値を設定するのに 対し、このファンクションでは周波数を設定する。 関連 0000:0448h 0000:044Ah INT 1Ch - Function 06h I/O 0073h INT 18h - Function 25h Subfunction 00h 分類 CRT BIOS 名前 エミュレーションVRAMの確保(Set Emulation VRAM Address) 対象 PC-98LT・HA 入力 AX=2500h CX=テキストコード領域の大きさ DX=エミュレーションVRAMのセグメントアドレス 出力 なし 解説 o 仮想テキストVRAMのセグメントとサイズを設定する。 MS-DOS起動時のエミュレーションVRAMのセグメントは10A0h、 テキストコード領域の大きさは02E0h。 o 詳細は、テクニカルデータブックのPC-98LT編を参照。 関連 INT 18h - Function 25h Subfunction 01h 0000:04F4h 0000:04F6h INT 18h - Function 25h Subfunction 01h 分類 CRT BIOS 名前 エミュレーションVRAMのアドレス情報の取得(Get Emulation VRAM Address) 対象 PC-98LT・HA 入力 AX=2501h 出力 CX=テキストコード領域の大きさ DX=エミュレーションVRAMのセグメントアドレス 解説 o INT 18h - Function 25h Subfunction 00hで設定された、仮想テキスト VRAMの位置と大きさを返す。 MS-DOS起動時のエミュレーションVRAMのセグメントは10A0h、 テキストコード領域の大きさは02E0h。 o 詳細は、テクニカルデータブックのPC-98LT編を参照。 関連 INT 18h - Function 25h Subfunction 00h 0000:04F4h 0000:04F6h INT 18h - Function 26h 分類 CRT BIOS 名前 エミュレーションVRAM上のテキストの表示(Text Display) 対象 PC-98LT・HA 入力 AH=26h 出力 なし 解説 o 仮想テキストVRAMに書き込まれた文字のうち、まだ表示されていない文字を グラフィックVRAMに描画する。 o 詳細は、テクニカルデータブックのPC-98LT編を参照。 関連 INT 18h - Function 27h 分類 CRT BIOS 名前 領域のスクロール(Scroll) 対象 PC-98LT・HA 入力 AH=27h AL=動作指定 00h: クリア 01h: 垂直スクロール 02h: 水平スクロール BL=スクロールピッチ(AL=01h,02hのとき) CH=矩形領域の行数 CL=矩形領域の桁数 DH=パディングするアトリビュート DL=パディングする文字コード SI=矩形領域のアドレス(エミュレーションVRAM上のオフセット) DF(Direction Flag)=スクロール方向 1:↓または→ 0:↑または← 出力 なし レジスタ変化なし 解説 o 指定された矩形領域に対して、クリア、または垂直スクロール、水平 スクロールを行う。移動元の領域のうち、移動先と重ならない部分は 指定した文字(1バイト文字)とアトリビュートで埋められる。 o クリッピング処理は一切行われないので、画面をはみだすような移動を 指示すると正常に転送されない。 o 移動先が、移動元の領域を完全に飛び越えるような操作を行ったとき、 矩形領域の軌跡がパディングされる。 関連 INT 18h - Function 29h(LT・HA) 図 [クリア:AL=00h,DF=0] 実行前 実行後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | ← CL → | | パディング | | SI→↑o------+ | | @@@@@@@@ | | || | | | @@@@@@@@ | | CH| | | | @@@@@@@@ | | || | | | @@@@@@@@ | | ↓+------+ | | @@@@@@@@ | | | | | | | | | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) [クリア:AL=00h,DF=1] 実行前 実行後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | ← CL → | | パディング | | ↑+------+ | | @@@@@@@@ | | || | | | @@@@@@@@ | | CH| | | | @@@@@@@@ | | || | | | @@@@@@@@ | | ↓+------o←SI | | @@@@@@@@ | | | | | | | | | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) [垂直↑方向:AL=01h,DF=0] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | ↑+------+ | | +------+ | | BX | | | | | | SI→↓o------+↑ | | | | | | | || | | | | | | | |CH | | +------+ | | | || | | @@@@@@@@ | | +------+↓ | | @@@@@@@@ | | ← CL → | | パディング | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) [垂直↓方向:AL=01h,DF=1] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | ← CL → | | パディング | | ↑+------+ | | @@@@@@@@ | | || | | | @@@@@@@@ | | CH| | | | +------+ | | || | | | | | | | ↓+------o↑←SI | | | | | | BL | | | | | | +------+↓ | | +------+ | | | | | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) [水平←方向:AL=02h,DF=0] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | SI | | | | ↓ | | | | ←BX→ | | | | + o------+↑ | | +------+@@@@@ パ | | | | || | | | |@@@@@ デ | | | | |CH | | | |@@@@@ ィ | | | | || | | | |@@@@@ ン | | + +------+↓ | | +------+@@@@@ グ | | ← CL → | | | +---------------------------+ +---------------------------+ (0,24) (79,24)(0,24) (79,24) [水平→方向:AL=02h,DF=1] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | ←―CL―→ | | | | ↑+--------+ + | | パ @@@@@+--------+ | | || | | | | デ @@@@@| | | | CH| | | | | ィ @@@@@| | | | || | | | | ン @@@@@| | | | ↓+--------o + | | グ @@@@@+--------+ | | ←BX→ | | | | ↑ | | | | SI | | | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) [移動先が移動元の領域を飛び越える場合] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | | | | | +--+ + | | @@@@@@@@@@@@@@@+--+ | | | | | | | @@@@@@@@@@@@@@@| | | | +--o + | | @@@@@@@@@@@@@@@+--+ | | ←――BX―――→ | | パディング | | ↑ | | | | SI | | | | | | | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) INT 18h - Function 28h 分類 CRT BIOS 名前 一文字の表示(Display Character) 対象 PC-98LT・HA 入力 AH=28h AL=アトリビュート BX=表示位置(仮想テキストVRAM上のオフセットアドレス) DX=文字コード ■ANK文字表示のとき DH=80h DL=文字コード(00〜FFh) ■2バイト文字表示のとき DX=JIS漢字コード * DHに1バイト目、DLに2バイト目をセットする DF(Direction Flag)=0 出力 なし 解説 o 1文字を表示する。 仮想テキストVRAMとグラフィックVRAMの両方に書き込むので、 このファンクションを実行すると、ただちに画面に表示される。 関連 INT 18h - Function 29h(H98) 分類 CRT BIOS 名前 テキストスクロール(矩形領域の移動) 対象 PC-H98 入力 AH=29h BX=移動矩形領域の行数 CX=移動矩形領域の桁数 DL=パディングする文字コード(1バイト文字) DH=パディングするアトリビュート(偶数番地) AL=パディングする拡張アトリビュート(奇数番地) SI=転送元アドレス(テキストVRAMのオフセット) DI=転送先アドレス(テキストVRAMのオフセット) DF(Direction Flag)=スクロール方向 1:↓または→ 0:↑または← 出力 AX=不定 BX=不定 CX=不定 DX=不定 SI=不定 DI=不定 DF=不定 解説 o 指定された矩形領域に対して、垂直スクロールまたは水平スクロールを 行う。移動元の領域のうち、移動先と重ならない部分は指定した文字 (1バイト文字)とアトリビュートで埋められる。 移動方向は、SI,DIレジスタと、DFフラグの状態で決まる。 o クリッピング処理は一切行われないので、画面をはみだすような移動を 指示すると正常に転送されない。 o 転送方向とDF状態のチェックは行われないので、ユーザプログラム側で 適切なパラメータを与えなければならない。 o 斜め方向(水平・垂直同時)には移動できない。そのようなパラメータを 与えると、パディングが正しく行われない。 o 移動先が、移動元の領域を完全に飛び越えるような操作を行ったとき、 矩形領域の軌跡がパディングされる。 u PC-H98シリーズテクニカルデータブックでは、ファンクション実行後の BPレジスタが不定になっているが、実際には変化しない。 関連 表 [垂直↑方向] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | DF=0 DI→o | | DI→o------+ | | | | | | | | SI→o------+↑ | | SI→| | | | | || | | | | | | | |CX | | +------+ | | | || | | @@@@@@@@ | | +------+↓ | | パディング→@@@@@@@@ | | ← BX → | | | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) [垂直↓方向] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | ← BX → | | | | ↑+------+ | |パディング→@@@@@@@@ | | || | | | @@@@@@@@ | | CX| | | | +------+ | | || | | | | | | | ↓+------o←SI | | | |←SI | | | | | | | | DF=1 o←DI | | +------o←DI | | | | | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) [水平←方向] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | DI SI | | DI SI | | DF=0 ↓ ↓ | | ↓ ↓ | | o o------+↑ | | o------+@@@@ パ | | | || | | | |@@@@ デ | | | |CX | | | |@@@@ ィ | | | || | | | |@@@@ ン | | +------+↓ | | +------+@@@@ グ | | ← BX → | | | +---------------------------+ +---------------------------+ (0,24) (79,24)(0,24) (79,24) [水平→方向] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | ← BX → | | | | ↑+--------+ | | パ @@@+--------+ | | || | | | デ @@@| | | | CX| | | | ィ @@@| | | | || | | | ン @@@| | | | ↓+--------o o | | グ @@@+--------o | | ↑ ↑ | | ↑ ↑ | | SI DI DF=1 | | SI DI | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) [移動先が移動元の領域を飛び越える場合] 転送前 転送後 (0,0) (79,0) (0,0) (79,0) +---------------------------+ +---------------------------+ | | | | | +--+ | | @@@@@@@@@@@@@@@+--+ | | | | | | @@@@@@@@@@@@@@@| | | | +--o o | | @@@@@@@@@@@@@@@+--o | | ↑ ↑ | | ↑ ↑ | | SI DI | | SI DI | | | | | +---------------------------+ +---------------------------+ (0,24) (79,24) (0,24) (79,24) INT 18h - Function 29h(LT・HA) 分類 CRT BIOS 名前 領域スクロール下請け処理 Undocumented 対象 PC-98LT・HA 入力 AH=29h AL=00h BX=移動矩形領域行数 CX=移動矩形領域桁数 DH=パディングするアトリビュート DL=パディングする文字コード SI=転送元アドレス(エミュレーションVRAMのオフセット) DI=転送先アドレス(エミュレーションVRAMのオフセット) DF=データ転送方向 ↑または←移動時 0 ↓または→移動時 1 出力 なし レジスタ変化なし 解説 o 指定された矩形領域に対して、垂直スクロールまたは水平スクロールを 行う。移動元の領域のうち、移動先と重ならない部分は指定した文字 (1バイト文字)とアトリビュートで埋められる。 移動方向は、SI,DIレジスタと、DFフラグの状態で決まる。 o クリッピング処理は一切行われないので、画面をはみだすような移動を 指示すると正常に転送されない。 o 転送方向とDF状態のチェックは行われないので、ユーザプログラム側で 適切なパラメータを与えなければならない。 o 斜め方向(水平・垂直同時)には移動できない。そのようなパラメータを 与えると、パディングが正しく行われない。 o 移動先が、移動元の領域を完全に飛び越えるような操作を行ったとき、 矩形領域の軌跡がパディングされる。 o INT 18h - Function 29h(H98)の表を参照 u INT 18h - Function 27h等の下請け処理として使用される。 関連 INT 18h - Function 27h INT 18h - Function 2Ah 分類 CRT BIOS 名前 拡張アトリビュートのモード設定 対象 PC-H98 入力 AH=2Ah AL=モード設定情報 bit 7,6: アトリビュートモード 11b=未使用 10b=拡張アトリビュート EGHモード 01b=拡張アトリビュート JEHモード 00b=従来互換アトリビュート PCモード(起動時設定) * ノーマルモードのテキスト画面40桁時、指定値にかかわらず 00b指定と同じ状態になる bit 5: 未使用(0を指定) bit 4: 未使用(0を指定) bit 3: 予約(ハイレゾモード時のディスプレイ種別)(0を指定) bit 2: 罫線色 1=I/Oセット値(INT 18h - Function 2Chでの設定値)に従う 0=VRAMのアトリビュートに従う(起動時設定) * ノーマルモードのテキスト画面40桁時、指定値にかかわらず 0指定と同じ状態になる。 bit 1: 不明(Undocumented) 1=不明 0=起動時設定 bit 0: CRTラインモード(Undocumented) ■ノーマルモード・水平走査周波数31kHzのとき 1=行間空き25行 0=通常の20/25行モード(起動時設定) ■ノーマル・水平走査周波数24kHz,ハイレゾのとき 設定不可(常に0) 出力 AX=不定 解説 o PC-H98で拡張されたテキスト画面表示のモード設定を行う。 このファンクションで設定したモードを読み出すには、INT 18h - Function 2Bhを用いる。 o 本ファンクションを実行すると必ず25行モードになる。 o AL bit 7,6で、3種類のアトリビュートモードを選択する。アトリビュート モードの詳細は、「用語:拡張アトリビュート」を参照。 u AL bit 5,4は未使用。bit 3は、INT 18h - Function 2Bhでモード設定状態の 読み出しを行うとき、ハイレゾモードのディスプレイ種別を返すために 使用しているので、設定はできない。 bit 5〜3の設定に関する注意は以下のとおりである。このファンクションの 設定値は、システム共通域の0000:0459hに保存される。ハイレゾモードでは、 bit 5〜3の値をこのファンクションで変更しようとしても、システム共通域の 同ビットは変化しない。ノーマルモードでは、bit 5〜3の値がシステム共通域 の同ビットにそのまま反映して設定される。このため、ノーマルモード時は 000bを設定するほうが望ましい。 +--------+------------------+ |モード |bit 5〜3の変更可否| +--------+------------------+ |ハイレゾ|変更不可能 | |ノーマル|変更可能 | +--------+------------------+ o AL bit 2で、罫線色の指定方法を選択する。ここで言う罫線とは、2バイト 文字の罫線素片ではなく、アトリビュートで指定するアンダーライン・ バーティカルライン・オーバーラインを指す。 0を指定すると、罫線はアトリビュート(文字色)で指定した色で表示 される。キャラクタ単位で色を設定できるが、同じ位置に表示している文字と 同色になる。 1を指定すると、全ての罫線はINT 18h - Function 2Chで指定した色で表示 される。同じ位置に表示している文字と異なる色にすることができる。 u AL bit 1の動作は不明。 u AL bit 0では、ノーマルモードで水平走査周波数が31kHzのときに限り、 行間の空いた25行表示を選択できる。水平走査周波数は、システム共通域の 0000:054Ch bit 5を調べればわかる。 1を指定したときは、行間空き25行表示のみ可能である。PC-9821 (Bf・Bp・Bs・Be・Tsを除く)のように20行や30行の表示を行うことはできない。 u PC-H98シリーズテクニカルデータブックでは、ファンクション実行後の BPレジスタが不定になっているが、実際には変化しない。 関連 INT 18h - Function 2Bh INT 18h - Function 2Ch INT DCh - Function 14h Subfunction 0010h,0011h 0000:0459h I/O 006Eh INT 18h - Function 2Bh 分類 CRT BIOS 名前 拡張アトリビュートモードの取得 対象 PC-H98 入力 AH=2Bh 出力 AL=モード設定情報 bit 7,6: アトリビュートモード 11b=予約 10b=拡張アトリビュート EGHモード 01b=拡張アトリビュート JEHモード 00b=従来互換アトリビュート PCモード(起動時設定) bit 5: 未使用 bit 4: 未使用 bit 3: PC-H98ハイレゾモードのディスプレイ種別(Undocumented) ■[ハイレゾ] 1=ノンインターレース 0=インターレース * 起動時設定は、接続されているディスプレイによる bit 2: 罫線色 1=I/Oセット値(INT 18h - Function 2Chでの設定値)に従う 0=VRAMのアトリビュートに従う(起動時設定) bit 1: 不明(Undocumented) 1=不明 0=起動時設定 bit 0: CRTラインモード(Undocumented) ■[ノーマルモード・水平走査周波数31kHz] 1=行間空き25行 0=通常の20/25行モード(起動時設定) ■[ノーマル・水平走査周波数24kHz,ハイレゾ] 常に0 AH=不定 解説 o PC-H98で拡張されたテキスト画面表示のモード読み出しを行う。 モード設定はINT 18h Function 2Ahで行う。 実際の処理は、システム共通域0000:0459hから値を読み出しているだけ である。 u PC-H98シリーズテクニカルデータブックでは、ファンクション実行後の BPレジスタが不定になっているが、実際には変化しない。 関連 INT 18h Function 2Ah 0000:0459h INT 18h - Function 2Ch 分類 CRT BIOS 名前 罫線色の設定 対象 H98 入力 AH=2Ch AL=罫線色 bit 7〜4:0000b bit 3 :I=インテンシティ bit 2 :G=グリーン bit 1 :B=ブルー bit 0 :R=レッド 出力 AX=不定 解説 o 罫線色を設定する。ここで言う罫線とは、2バイト文字の罫線素片ではなく、 アトリビュートで指定するアンダーライン・バーティカルライン・ オーバーラインを指す。 INT 18h - Function 2AhでAL bit 2=1(罫線色はI/Oセット従属)に設定されて いる場合、全ての罫線はこのファンクションで指定した色で表示される。 u PC-H98シリーズテクニカルデータブックでは、ファンクション実行後の BPレジスタが不定になっているが、実際には変化しない。 関連 INT 18h - Function 2Ah I/O 00A7h INT 18h - Function 2Dh 分類 CRT BIOS 名前 無動作 Undocumented 対象 PC-H98 + ノーマル 入力 AH=2Dh 出力 なし 解説 o なにもせずリターンする。 関連 INT 18h - Function 30h 分類 CRT BIOS 名前 拡張画面モード設定 Undocumented 対象 PC-98GS, PC-9821(Tsを除く)[ノーマル], PC-9801BA2・BS2・BX2 入力 AH=30h AL=モード設定情報 bit 7〜4: 0000bを設定する(0以外で実行すると異常終了) bit 3,2: 水平走査周波数 ---+---------------+---- 値 |水平走査周波数 |備考 ---+---------------+---- 11b|31.47kHz | 10b|24.83kHz | 01b|未使用 | 00b|15.73kHz |*1 ---+---------------+---- *1 PC-98GSのみ設定可能。NTSC映像信号を出力するビデオモード 関連:I/O 09A8h bit 1: 同期モード[PC-98GS] 1= 外部同期(水平走査周波数15.73kHz時のみ選択可能) 0= 内部同期(起動時設定) * PC-98GS以外は常に0に設定する bit 0: ラスタスキャンモード 1= インターレース 0= ノンインターレース * PC-98GSでは、24.83kHz, 31.47kHzのとき0に、 15.73kHzのときのみ1に設定可能。 * PC-98GS以外では通常0に設定する。PC-9821初代以外では1に 設定可能だが、インターレース表示になるわけではない。また、 1に設定すると0000:053Bhの値が不正になり、次にINT 18h - Function 0Eh,0Fh,11h等を実行したときテキスト画面が乱れる。 * PC-9821初代は1で実行すると異常終了 関連:0000:0459h bit 3 BH=解像度・行数指定 bit 7,6: 00bを設定する(0以外で実行すると異常終了) bit 5,4: グラフィック解像度 ---+------------------+----- 値 |グラフィック解像度|備考 ---+------------------+----- 11b|640x480 |*1 10b|640x400 |*2,*3 01b|640x200(LOWER) |*2 00b|640x200(UPPER) |*2,*4 ---+------------------+----- *1 - PC-98GSでは、水平走査周波数15.73kHz,31.47kHz時に設定 可能。GS拡張グラフィックスモードに設定される。 - PC-9821(Bf・Bp・Bs・Beを除く)では、水平走査周波数31.47kHz時 のみ設定可能。拡張グラフィックスモードに設定される。 - PC-9821Bf・Bp・Bs・Be, PC-9801BA2・BS2・BX2では設定不可能。 *2 - PC-98GSでは、水平走査周波数15.73kHz,24.83kHz時に設定可能。 - PC-9821初代・Neでは、水平走査周波数24.83kHz時のみ設定可能。 - PC-9821(初代・Neを除く), PC-9801BA2・BS2・BX2では、 水平走査周波数24.83kHz,31.47kHz時に設定可能。 *3 - PC-9821(Bf・Bp・Bs・Beを除く)では、標準/拡張グラフィックス モードは直前の状態を引き継ぐ。グラフィックスモードを 変更するにはINT 18h - Function 4Dhを使用する。 - PC-98GS, PC-9821Bf・Bp・Bs・Be, PC-9801BA2・BS2・BX2は、 2/8/16色モードのみ。 *4 - 起動時設定 関連:0000:0459h bit 0 0000:054Dh bit 7 0000:0597h bit 1,0 INT 18h - Function 42h bit 3,2: 00bを設定する(0以外で実行すると異常終了) bit 1,0: テキスト行数 ---+------------+----------------------------------- 値 |テキスト行数|備考 ---+------------+----------------------------------- 11b|設定禁止 |この値を設定すると異常終了 10b|30行 |640x480時のみ設定可能 01b|25行 | 00b|20行 | ---+------------+----------------------------------- 関連:0000:053Ch bit 4,0 INT 18h - Function 0Ah,0Bh 出力 BH=終了コード 00h: 正常終了 01h: 異常終了 ■BH=00hのとき AL=00h(正常終了) ■BH=01hのとき AL=エラー種別 01h: 入力パラメータエラー 02h: 不明 AH=不定 解説 o PC-9821(Tsを除く)とPC-9801BA2・BS2・BX2で拡張された画面表示のモード 設定を行う(PC-9821Tsは、このファンクションをサポートしていない)。 このファンクションで設定したモードを読み出すには、INT 18h - Function 31hを用いる。 o 機種によって設定可能なモードの組み合わせが異なる(表:拡張画面モード 設定で可能な組み合わせ)。 設定不可能なパラメータが指定されたときは、このファンクションは 無動作になる。 設定可能なパラメータが指定されて正常終了すると、テキスト画面表示と カーソル表示がOFFになる。 u PC-9821Af・Ap・As・Ae・Ap2・As2・Ce・Cs2・Ce2で、AL bit 0に1を設定すると、 システム共通域内のCRTの行当りラスタ本数-1を示すワークエリア (0000:053Bh)が、実際の半分の値になる。この状態でINT 18h - Function 0Eh, 0Fh,11hなどを実行するとテキスト画面が正常に表示されなくなってしまう ので注意が必要。通常は入力AL bit 0には0を指定する。 u AL=0Dh,BH=31hでこのファンクションを実行すると、PC-9821 (初代・Bf・Bp・Bs・Beを除く)では暴走する。 PC-98GS, PC-9821初代・Bf・Bp・Bs・Be, PC-9801BA2・BS2・BX2では設定不可能な 組み合わせなので、単にエラー終了する。 関連 INT 0Ah INT 18h - Function 31h INT 18h - Function 4Dh INT DCh - Function 14h Subfunction 0010h,0011h 0000:045Ch bit 6 0000:054Dh bit 7,2 0000:0597h bit 7 F8E8:0004h bit 7 表 拡張画面モード設定で可能な組み合わせ -------+-------------------------+-------------------+---+---+---+---+---+---+---+---+---+ 入力 |出力ビデオ信号 |画面表示 |PC-| PC-9821 |PC-| パラメータ | | |98 | |Af |Ne |Ce |Ap2|Bf |Cs2|9801 ---+---+--------+--------+-------+-------+------+----+GS | |Ap | | |As2|Bp |Ce2|BA2| AL |BH |水平走査|垂直同期|CRT |グラフィック|グラフィッ|テキスト| |初 |As | | | |Bs | |BS2| | | 周波数| 周波数| 解像度| 解像度|クスモード|行数| |代 |Ae | | | |Be | |BX2| ---+---+--------+--------+-------+-------+------+----+---+---+---+---+---+---+---+---+---+ 01h|00h|15.73kHz| 59.94Hz|640x480|640x200| 標準 | 20 |○ |− |− |− |− |− |− |− |− | 01h|01h| ↑ | ↑ | ↑ |(UPPER)| ↑ | 25 |○ |− |− |− |− |− |− |− |− | 01h|10h| ↑ | ↑ | ↑ |640x200| ↑ | 20 |○ |− |− |− |− |− |− |− |− | 01h|11h| ↑ | ↑ | ↑ |(LOWER)| ↑ | 25 |○ |− |− |− |− |− |− |− |− | 01h|20h| ↑ | ↑ | ↑ |640x400| 標準 | 20 |○ |− |− |− |− |− |− |− |− | 01h|21h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |○ |− |− |− |− |− |− |− |− | 01h|30h| ↑ | ↑ | ↑ |640x480|GS拡張| 20 |○ |− |− |− |− |− |− |− |− | 01h|31h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |○ |− |− |− |− |− |− |− |− | 01h|32h| ↑ | ↑ | ↑ | ↑ | ↑ | 30 |○ |− |− |− |− |− |− |− |− | 08h|00h|24.83kHz| 56.42Hz|640x400|640x200| 標準 | 20 |○ |○ |○ |○ |○ |○ |○ |○ |○ | 08h|01h| ↑ | ↑ | ↑ |(UPPER)| ↑ | 25 |◎ |◎ |○ |○ |◎ |○ |○ |○ |○ | 08h|10h| ↑ | ↑ | ↑ |640x200| ↑ | 20 |○ |○ |○ |○ |○ |○ |○ |○ |○ | 08h|11h| ↑ | ↑ | ↑ |(LOWER)| ↑ | 25 |○ |○ |○ |○ |○ |○ |○ |○ |○ | 08h|20h| ↑ | ↑ | ↑ |640x400| 標準 | 20 |○ |○ |○ |○ |○ |○ |○ |○ |○ | 08h|21h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |○ |○ |○ |○ |○ |○ |○ |○ |○ | 08h|20h| ↑ | ↑ | ↑ |640x400| 拡張 | 20 |− |○ |○ |○ |○ |○ |− |○ |− | 08h|21h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |− |○ |○ |○ |○ |○ |− |○ |− | 09h|00h| ↑ | ↑ | ↑ |640x200| 標準 | 20 |− |− |○ |○ |○ |○ |○ |○ |○ | 09h|01h| ↑ | ↑ | ↑ |(UPPER)| ↑ | 25 |− |− |◎1|◎ |○ |◎1|◎1|◎1|◎1| 09h|10h| ↑ | ↑ | ↑ |640x200| ↑ | 20 |− |− |○ |○ |○ |○ |○ |○ |○ | 09h|11h| ↑ | ↑ | ↑ |(LOWER)| ↑ | 25 |− |− |○ |○ |○ |○ |○ |○ |○ | 09h|20h| ↑ | ↑ | ↑ |640x400| 標準 | 20 |− |− |○ |○ |○ |○ |○ |○ |○ | 09h|21h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |− |− |○ |○ |○ |○ |○ |○ |○ | 09h|20h| ↑ | ↑ | ↑ |640x400| 拡張 | 20 |− |− |○ |○ |○ |○ |− |○ |− | 09h|21h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |− |− |○ |○ |○ |○ |− |○ |− | 0Ch|00h|31.47kHz| 70.10Hz|640x400|640x200| 標準 | 20 |− |− |○ |− |○ |○ |○ |○ |○ | 0Ch|01h| ↑ | ↑ | ↑ |(UPPER)| ↑ | 25 |− |− |○ |− |○ |○ |○ |○ |○ | 0Ch|10h| ↑ | ↑ | ↑ |640x200| ↑ | 20 |− |− |○ |− |○ |○ |○ |○ |○ | 0Ch|11h| ↑ | ↑ | ↑ |(LOWER)| ↑ | 25 |− |− |○ |− |○ |○ |○ |○ |○ | 0Ch|20h| ↑ | ↑ | ↑ |640x400| 標準 | 20 |− |− |○ |− |○ |○ |○ |○ |○ | 0Ch|21h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |− |− |○ |− |○ |○ |○ |○ |○ | 0Ch|20h| ↑ | ↑ | ↑ |640x400| 拡張 | 20 |− |− |○ |− |○ |○ |− |○ |− | 0Ch|21h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |− |− |○ |− |○ |○ |− |○ |− | 0Ch|30h| ↑ | 59.94Hz|640x480|640x480| 拡張 | 20 |− |○ |○ |○ |○ |○ |− |○ |− | 0Ch|31h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |− |○ |○ |○ |○ |○ |− |○ |− | 0Ch|32h| ↑ | ↑ | ↑ | ↑ | ↑ | 30 |− |○ |○ |○ |○ |○ |− |○ |− | 0Ch|30h| ↑ | 59.94Hz|640x480|640x480|GS拡張| 20 |○ |− |− |− |− |− |− |− |− | 0Ch|31h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |○ |− |− |− |− |− |− |− |− | 0Ch|32h| ↑ | ↑ | ↑ | ↑ | ↑ | 30 |○ |− |− |− |− |− |− |− |− | 0Dh|00h| ↑ | 70.10Hz|640x400|640x200| 標準 | 20 |− |− |○ |− |○ |○ |○ |○ |○ | 0Dh|01h| ↑ | ↑ | ↑ |(UPPER)| ↑ | 25 |− |− |◎2|− |○ |◎2|◎2|◎2|◎2| 0Dh|10h| ↑ | ↑ | ↑ |640x200| ↑ | 20 |− |− |○ |− |○ |○ |○ |○ |○ | 0Dh|11h| ↑ | ↑ | ↑ |(LOWER)| ↑ | 25 |− |− |○ |− |○ |○ |○ |○ |○ | 0Dh|20h| ↑ | ↑ | ↑ |640x400| 標準 | 20 |− |− |○ |− |○ |○ |○ |○ |○ | 0Dh|21h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |− |− |○ |− |○ |○ |○ |○ |○ | 0Dh|20h| ↑ | ↑ | ↑ |640x400| 拡張 | 20 |− |− |○ |− |○ |○ |− |○ |− | 0Dh|21h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |− |− |○ |− |○ |○ |− |○ |− | 0Dh|30h| ↑ | 59.94Hz|640x480|640x480| 拡張 | 20 |− |− |○ |○ |○ |○ |− |○ |− | 0Dh|31h| ↑ | ↑ | ↑ | ↑ | ↑ | 25 |− |− |× |× |× |× |− |× |− | 0Dh|32h| ↑ | ↑ | ↑ | ↑ | ↑ | 30 |− |− |○ |○ |○ |○ |− |○ |− | ---+---+--------+--------+-------+-------+------+----+---+---+---+---+---+---+---+---+---+ ○=設定可能 −=設定不可能 ×=設定禁止(このパラメータで実行すると内部ループから抜け出せなくなる場合がある) ◎=起動時状態 ◎1=起動時状態([GRPH]+[1]+[RESET]設定時) ◎2=起動時状態([GRPH]+[2]+[RESET]設定時) * グラフィック解像度640x400時の標準/拡張グラフィックスの選択は、 INT 18h - Function 4Dhで行う。INT 18h - Function 30hでは直接設定できない。 * PC-98GSでCRT解像度640x480を指定するとGS拡張グラフィックスモードに設定 される。PC-98GSをPC-9821互換の拡張グラフィックスモードに設定する ことはできない。 反対に、PC-9821でCRT解像度640x480を指定すると拡張グラフィックスモードに設定 される。PC-9821をGS拡張グラフィックスモードに設定することはできない。 * PC-98GSの外部同期モードは省略。 INT 18h - Function 31h 分類 CRT BIOS 名前 拡張画面モード取得 Undocumented 対象 PC-98GS, PC-9821(Tsを除く)[ノーマル], PC-9801BA2・BS2・BX2 入力 AH=31h 出力 AL=モード設定情報 bit 7〜4: 未使用 bit 3,2: 水平走査周波数 ---+---------------+---- 値 |水平走査周波数 |備考 ---+---------------+---- 11b|31.47kHz | 10b|24.83kHz | 01b|未使用 | 00b|15.73kHz |PC-98GSでNTSC映像信号を出力するビデオモード ---+---------------+---- 関連:I/O 09A8h bit 1: 同期モード[PC-98GS] 1= 外部同期(水平走査周波数15.73kHz時のみ) 0= 内部同期(起動時設定) * PC-98GS以外は常に0 bit 0: ラスタスキャンモード 1= インターレース 0= ノンインターレース * PC-98GSでは、24.83kHz, 31.47kHzのとき0、15.73kHzのとき1 * 起動時に1を示す機種が一部あるが、実際にインターレースの 信号が出力されるわけではない。1を示す理由は不明。 関連:0000:0459h bit 3 BH=解像度・行数 bit 7,6: 未使用 bit 5,4: グラフィック解像度 ---+------------------+-------------------- 値 |グラフィック解像度|備考 ---+------------------+-------------------- 11b|640x480 |256色 10b|640x400 |2,8,16,256色 01b|640x200(LOWER) |2,8,16色 00b|640x200(UPPER) |2,8,16色 ---+------------------+-------------------- * INT 18h - Function 42hでグラフィック解像度を変更した場合も、 このファンクションで読み出す値に反映する。 関連:0000:0459h bit 0 0000:054Dh bit 7 0000:0597h bit 1,0 bit 3,2: 未使用 bit 1,0: テキスト行数 ---+------------ 値 |テキスト行数 ---+------------ 11b|未使用 10b|30行 01b|25行 00b|20行 ---+------------ 関連:0000:053Ch bit 4,0 * INT 18h - Function 0Ahでテキスト行数を変更した場合も、 このファンクションで読み出す値に反映する。 解説 o PC-9821(Tsを除く)とPC-9801BA2・BS2・BX2で拡張された画面表示のモード 読み出しを行う(PC-9821Tsは、このファンクションをサポートしていない)。 モード設定はINT 18h Function 30hで行う。 o 640x400時のグラフィックスモード種別は、BIOSでは取得できない。 関連 INT 18h - Function 30h INT 18h - Function 4Dh 0000:045Ch bit 6 0000:054Dh bit 7,2 0000:0597h bit 7 F8E8:0004h bit 7